В приложении word нельзя присвоить документу имя уже открытого документа
Если написанная вами VBA-процедура функционирует прямо в документе, вы должны указать объект этого документа непосредственно в коде, Часто вы сможете сделать это неявным образом, используя объект Selection, о котором я расскажу дальше в настоящей главе. Однако в остальных ситуациях вам придется явно идентифицировать целевой объект.
Работа с активным документом
Типичная VBA-процедура в Word выполняет все свои магические действия в том документе, который в данный момент открыт для редактирования. Для указания активного документа используется объект ActiveDocument. Например, приведенная выше инструкция просто закрывает активный документ:
Как видите, вам не нужно писать код для определения того, какой же документ редактируется в данный момент: достаточно просто использовать объект ActiveDocument.
Если вам необходимо работать с определенным документом, который сейчас не активен, вы должны указать его как члена коллекции Documents, состоящей изо всех документов, открытых в настоящее время в Word. Как и в случае с любой другой коллекцией объектов в VBA, вы можете обратиться к отдельному документу в коллекции, используя его заголовок, который в данном случае совпадает с именем файла (только именем файла, а не с полным путем к нему). Вот соответствующий пример;
Documents("Toy Store News letter.doc")
Поскольку вы не знаете точно имя файла целевого документа заранее, а пользователь может в любой момент его изменить, вам следует создать переменную, которая будет содержать имя файла. После этого вы можете использовать эту переменную для указания объекта документа, например, так: Documents (strDocName).
Вы также можете обратиться к документу по его индексному номеру. Следующая инструкция, например, обращается к третьему документу в коллекции Documents:
Несмотря на всю простоту, этот метод достаточно ограничен, поскольку вы редко когда знаете индексный номер документа, с которым хотите работать. При этом вам стоит узнать имя открытого документа. Например, следующая инструкция присваивает переменной имя файла второго открытого документа:
Для создания нового документа используйте метод Add коллекции объектов Documents. Используемый без каких-либо документов, метод Add создает новый документ, базирующийся на шаблоне Normal (Обычный). Для указания другого шаблона укажите путь к нему в качестве аргумента, как показано ниже:
Documents.Add template:= _
"C:WindowsApplication DataXMicrosoftHidden templates"
Для открытия существующего документа используйте метод Open коллекции объектов Documents. Конечно же, вам необходимо указать полный путь к документу, как показано ниже:
Documents.Open FileName:= _
"С:ToysToys for infants.doc"
Для активизации уже открытого документа используйте метод Activate коллекции объектов Documents. Предположим, что вам необходимо, чтобы ваша VBA-программа активизировала определенный документ, который в момент запуска программы может быть и открыт, и закрыт. Используйте код, подобный показанному ниже, для активизации открытого документа или открытия документа, если он еще не открыт:
Dim docFileName As String, docPath as String
docFileName = "Старые игрушки.doc"
For Each target Doc In Documents
If targetDoc.Name = docFileName Then
If targetDocIsOpen = True Then
Documents.Open FileName := docPath & docFileName
Поскольку каждый документ Word состоит из одного или нескольких разделов, вы можете ожидать, что Word VBA содержит коллекцию Sections и отдельные объекты Section для работы с этими элементами. Так оно и есть. Наиболее важное применение объектов Section - организация доступа к верхним и нижним колонтитулам (через объект Header Footer ). Вы можете добавлять новые разделы в документ, используя метод Add коллекции Sections или метод Insert Break объекта Range или Selection.
Доступ к WMI с помощью сервера сценариев
Доступ к WMI с помощью сервера сценариев Полное понимание WMI невозможно без знания тех возможностей, которые она предоставляет администратору. Поэтому рассмотрим сейчас некоторые примеры написания сценариев сервера сценариев Windows с использованием возможностей WMI. Раздел
Доступ к объектам с помощью Web-служб
Доступ к объектам с помощью Web-служб Итак, мы приступаем к работе на совершенно новом уровне, т.е. с использованием Web-служб. С самого начала Web-среда рассматривалась как способ передачи данных между двумя точками. Именно эта исходная концепция способствовала развитию и
Поиск и замена текста с помощью VBA в Word
Поиск и замена текста с помощью VBA в Word Хотя это звучит и несколько необычно, но Find - это объект Word VBA. Объекты Find принадлежат диапазонам и выделенным областям. Для обнаружения или форматирования текста с помощью объекта Find вам потребуется выполнить следующие действия.1.
8.2. Публикация записей в блоге с помощью Word
8.2. Публикация записей в блоге с помощью Word Нововведением Word 2007 является возможность опубликовывать записи в блоги непосредственно из окна программы. Это очень удобно, поскольку Word имеет гораздо больше возможностей по набору и форматированию текста, чем текстовые
18.2.1. Склонность к большим документам
18.2.1. Склонность к большим документам Средства подготовки документов в Unix всегда были предназначены, главным образом, для разрешения трудностей, связанных с компоновкой крупных и сложных документов. Первоначально такими документами были патентные заявки и техническая
18.2.1. Склонность к большим документам
18.2.1. Склонность к большим документам Средства подготовки документов в Unix всегда были предназначены, главным образом, для разрешения трудностей, связанных с компоновкой крупных и сложных документов. Первоначально такими документами были патентные заявки и техническая
MICROSOFT WORD
MICROSOFT WORD . Я люблю – и значит, я живу, – это из Высоцкого . Я пишу – и значит, я работаю в Word, – это уже из нашей повседневной реальности. Наверное, нет в мире другой столь популярной программы, как текстовый редактор Word (исключая разве что Windows, хотя Word превосходно себя
Word Utilities
MS Word
MS Word Создание и разметка документаСовременную жизнь нельзя представить без обилия текстовых документов в бумажном и электронном виде.Microsoft Word – один из лучших текстовых редакторов. Он позволяет создавать и редактировать документы, добавлять в них таблицы и рисунки,
2. ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ, СОДЕРЖАЩИМ В ОСНОВНОМ СПЛОШНОЙ ТЕКСТ
2. ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ, СОДЕРЖАЩИМ В ОСНОВНОМ СПЛОШНОЙ ТЕКСТ 2.1. Построение документа 2.1.1. При необходимости допускается делить документ на части. Деление на части осуществляется на уровне не ниже раздела. Каждую часть комплектуют отдельно. Всем частям
3. ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ. СОДЕРЖАЩИМ ТЕКСТ, РАЗБИТЫЙ НА ГРАФЫ
3. ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ. СОДЕРЖАЩИМ ТЕКСТ, РАЗБИТЫЙ НА ГРАФЫ 3.1. Программные документы, содержащие текст, разбитый на графы, при необходимости разделяют на разделы и подразделы, которые не нумеруют. Допускается линии, разграничивающие строки и графы, не
Word Программа Microsoft Word – очень мощный текстовый редактор. Она позволяет сделать с текстом все, что угодно (и не только с текстом). Думаю, что вы уже видели толстые и умные книги по изучению этой программы. Но, по всей вероятности, подавляющее большинство из них не содержит ее
Как переименовать документ или файл в Word?
Было бы полезно переименовать документ, когда вы управляете большим количеством документов Word, и особенно когда вы переименовываете логически и просто, эти текстовые документы удобны для идентификации, редактирования и организации. Это руководство познакомит вас со способами переименования документов.
Рекомендуемые инструменты повышения производительности для Word
![]()
Переименуйте документ Word, щелкнув правой кнопкой мыши после сохранения
Удивительный! Используйте эффективные вкладки в Word (Office), например Chrome, Firefox и New Internet Explorer!
Перейдите в папку, в которой вы сохранили документ, щелкните документ правой кнопкой мыши и выберите Переименовывать в Контекст меню. Смотрите скриншот:
Переименовать документ Word, нажав "Сохранить как"
Kutools for Word, удобная надстройка, включает группы инструментов, облегчающих вашу работу и расширяющих ваши возможности обработки текстовых документов. Бесплатная пробная версия на 45 дней! Get It Now!
Шаг 1. Щелкните в Word 2007 или в Word 2010/2013 и выберите Сохранить как.
Шаг 2. Выберите папку, в которую хотите сохранить, и переименуйте ее на Имя файла текстовое поле, щелкните Сохраните кнопка. Смотрите скриншот:
![]() | ![]() | ![]() |
1. Выберите нужный тип из Сохранить как выпадающий список.
2. Он перестроит новый документ после переименования документа.
Переименуйте документы Word с помощью вкладки Office.
Если вы установите вкладку Office на свой компьютер, можно будет легко и быстро переименовать документы, щелкнув правой кнопкой мыши вкладку документа. Смотрите скриншот:
Используйте интерфейс документа с вкладками в Office 2003/2007/2010/2013/2016/2019:
Использование вкладок в Word, Excel, PowerPoint, Publisher, Access, Project и Visio;
Легко переключаться между файлами в Microsoft Office 2003/2007/2010/2013/2016/2019;
Совместимость с Windows XP, Windows Vista, Windows 7/8/10, Windows Server 2003 и 2008, Citrix System и Windows Terminal (Remote Desktop) Server;
Бесплатная пробная версия без ограничения функций через 30 дней!
Статья представляет собой еще один велосипед на тему формирования документов на основе шаблонов через СОМ-Объект. Как и все другие велосипеды, этот написан потому, что другие велосипеды - плохие. В действительности, если погуглить, мы получим огромное количество ссылок на советы в стиле "сделай так и будет тебе счастье". Но почему "так", зачем "так", какие есть альтернативы - авторы советов не раскрывают. Хуже того, половина найденных таким способом рецептов окажутся откровенно вредными. Судя по тому, как вредные рецепты копируются из совета в совет, большинство разработчиков, из тех, что переписываются на форумах, просто воспроизводят то, что когда-то нагуглили сами. Ну да, работает - не трогай :-)
Цель статьи - собрать в одном месте необходимый и достаточный набор рецептов по заполнению документов Ворд на основании шаблонов с помощью СОМ-Объекта
Оглавление:
Зачем и почему нужны файлы Ворд?
Немного философии. В действительности, зачем нужно формировать из информационной базы текстовые файлы, и почему обязательно в формате Ворд?
Потому, что пользователь для работы с текстом использует текстовый процессор. Строго говоря, кроме Ворда всегда существовали альтернативные программы, не уступающие по функционалу. Сейчас 2021 год и пользователи давно привыкли к таким вещам как жесткий пробел, запрет висящих строк, абзац, начинающийся с новой страницы, межстрочный интервал, колонтитулы и абзацные отступы. Довольно часто можно столкнуться с заявлением "наша разработка может формировать документы в формате Ворд". При дальнейшем рассмотрении оказывается, что "шаблон" хранится непосредственно в информационной базе либо в виде текста, либо в виде форматированного текста, либо в виде набора абзацев и так далее. Как бы ни старались разработчики платформы и приложения, полученный файл это не тот "Ворд", которого ожидает пользователь. Этот эрзац всегда является компромиссом между полноценным файлом Ворда и возможностями системы автоматизации. Для того, чтобы формировать полноценный файл Ворда, со всеми возможностями форматирования, которыми пользователи привыкли пользоваться, требуется пересоздать Ворд внутри информационной системы, что практически недостижимо.
Потому, что никакие другие файлы кроме файлов Ворда не будут приняты партнерами пользователя. В этом смысле Ворд безальтернативен т.к. все пользуются именно Вордом. Можно сколько угодно рассуждать о преимуществах Лайбре Офиса, но, когда ежедневно нужно обмениваться документами с десятком новых людей, без Ворда не обойтись.
Что значит сформировать файл Ворд?
В связи с неоднозначностью сложившейся терминологии, считаю нужным пояснить. Под формированием файла Ворд по пользовательскому шаблону я подразумеваю следующий процесс. Пользователь передает разработчику файл с образцом документа, который хочет получать из информационной системы в автоматизированном режиме. Разработчик дорабатывает информационную систему таким образом, чтобы она позволяла формировать файлы, точно соответствующие первоначальному образцу. Точно, значит без явных указаний пользователя разработчик не меняет по своему усмотрению ни одного элемента форматирования, ни шрифт, ни размер, ни поля, ни колонтитулы. НИЧЕГО не меняет. Совершенно ничего. На выходе пользователь должен получить документ неотличимый от документа, созданного собственноручно.
Способы формирования файла Ворд
Работа программы по формированию файла сводится к модификации образца, предоставленного пользователем. К счастью, пользователи приложений, построенных на базе 1С-Предприятия, люди скучные. И их запросы к формированию файлов невелики. Им не требуются информационные буклеты или рекламные плакаты. Им нужны документы. Договоры, акты, письма, исковые заявления, и т.д. Потому обработка файла программой сводится к замене (вставке) текста на полученный из базы данных, удаление каких-то блоков текста и, быть может, вставке небольших картинок, например, логотипа или штрих-кода.
Существует два популярных способа работы с файлами Ворд:
1. Через СОМ-Объект Ворд.
2. Через непосредственную модификацию файлов docx
Главное отличие между ними заключается в том, что первый способ предоставляет разработчику инструмент - полнофункциональный API, позволяющий делать с документом все то же самое, что может делает пользователь, непосредственно работая в редакторе. Второй же способ предполагает собственную разработку инструмента, на основании документации по формату хранения файла. Если функциональность разработанного инструмента перестанет удовлетворять возникающим потребностям - придется разрабатывать (или искать) новый инструмент. В то время как модернизация кода основанного на API СОМ-объектов не представляет сложностей.
Первый способ предполагает, что на том компьютере, где будет исполняться код приложения и формироваться файл, установлен Майкрософт Офис. При установке, Офис регистрирует в Виндоус СОМ-объекты для каждого из приложений входящих в пакет. Таким образом, другие приложения, запущенные на компьютере, могут через интерфейс СОМ-объектов выполнять любые действия с документами офисных приложений, возможности предоставленного программного интерфейса, как минимум, не уступают возможностям пользователя, редактирующего документ непосредственно в приложении.
Главная проблема примеров из интернета по рассматриваемой теме - игнорируется тот факт, что за компьютером сидит живой пользователь. Видимо, предполагается, что после нажатия кнопки "сформировать файл", пользователь должен замереть, не дышать, не дотрагиваться до мыши и клавиатуры в течение всего времени создания файла. А ведь формирование каждого файла может занимать заметное время, в некоторых случаях - больше минуты. И ладно бы вопрос стоял "или так или никак". Но ведь на самом деле, нет. Можно работать с СОМ-Объектом параллельно с работой пользователя, код чувствительный действиям пользователя не имеет никаких преимуществ перед кодом, не мешающим пользователю. Единственная причина, по которой он используется - нежелание разработчика вникнуть в проблему и рассмотреть альтернативные варианты решения.
Код языка 1С для работы с СОМ-Объектами на сервере и на клиенте ничем не отличается. Единственное, за сервером не работает реальный пользователь, поэтому проблема неудачного кода не выплывает с такой остротой. Повторюсь, преимуществ у такого кода все равно нет. Тем более, что код нужно отлаживать, часто это удобнее делать на клиенте, вот и появился пользователь. А еще, может потребоваться перенос работающего кода с сервера на клиент, например, в рамках рефакторинга и изменения архитектуры приложения. А еще, код может работать в файловой базе, где "сервер" очень условен - программный слой, запускаемый на машине каждого пользователя. Таким образом, лучше всего исходить из того, что пользователь за компьютером есть всегда.
Объектная модель Ворд
Ворд, запущенный в качестве СОМ-Объекта, предоставляет доступ к множеству объектов приложения. Понятие "объект" такое же как везде - программная абстракция, имеющая методы и свойства. Методы могут быть как процедурами, так и функциями, при этом функции можно вызывать как процедуры, игнорируя возвращаемое значение. Свойства могут быть либо объектами, либо обычными (скалярными, примитивными) данными, такими как число, строка, логический тип.
Среди объектов особо выделяются специальные объекты-контейнеры, называемые коллекциями. Каждая коллекция предназначена для хранения ссылок на группу однотипных объектов. Например, коллекция Documents хранит ссылки на объекты Document, коллекция Tables хранит ссылки на объекты Table и т.д. Все коллекции именованы во множественном числе, а обычные объекты в единственном. Нумерация объектов в коллекции начинается с единицы. Коллекции Ворд можно перебирать циклом "Для каждого" языка программирования 1С.
Полный список объектов можно, и нужно, смотреть в справочной системе Ворд (раздел справки по Вижуал Бейсику (VBA)). Для старых версий справка откроется локально на компьютере пользователя. Новые версии отправят на сайт Майкрософт: en-us /office/vba/api/overview/word/object-model
Многие методы объектов Ворда в качестве параметров принимают числовые значения. Для того, чтобы не путаться в числовых значениях, в Вижуал Бейсике предусмотрены именованные константы. Например, константа wdFormatRTF соответствует числу 6. В Вижуал Бейсике можно писать код так:
Вне VBA именованные константы недоступны, поэтому код 1С будет таким:
Или, без “магических” чисел, таким:
Я предпочитают последний вариант, терпеть не могу непонятных чисел в коде.
Запуск Ворд, открытие файла
Традиционно, первые три строчки работы СОМ-Объектом Ворд выглядят так:
… и это уже неправильно! Третья строчка сразу говорит о том, что перед вами бездумная копипаста. Справедливости ради, бывают и толковые примеры, начинающиеся именно так, но, это лишь подтверждает, что даже в толковых примерах присутствует копипаста, не осмысленная автором. Что неправильно с третьей командой будет объяснено ниже, сначала разберем первые две строки.
Запускает приложение Ворд и возвращает на него ссылку. Теперь по ссылке Word мы можем обращаться к СОМ-объекту. Возникает закономерный вопрос, влияет ли как-то окружение, в момент выполнения команды, на результат её работы? Из окружения нас интересует в первую очередь интерактивная работа пользователя с Вордом. Возможны два варианта:
- в момент выполнения Ворд запущен (имеются открытые пользователем файлы)
- в момент вызова Ворд не запущен
Так вот, нет, не влияет. Ворд запускается как новый экземпляр приложения, коллекция Documents запущенного приложения не содержит ни одной ссылки, т.е. доступа к ранее открытым документам через ссылку Word не получить.
Но, после запуска СОМ-Объекта, новые, открываемые пользователем, файлы могут открыться именно в этом экземпляре Ворда. Для пользователя разницы нет, но нам это следует, на всякий случай, учитывать.
Скрывает Ворд. Т.е. пользователь не будет видеть обрабатываемый файл в отдельном окне. Никакой особой пользы скрытие окна Ворд не несет. Если программа написана корректно, то пользователь не будет мешать программе, а программа не будет мешать пользователю, вне зависимости от того, видимо ли окно обрабатываемого файла. Естественно, при условии, что пользователь не начнет редактировать открытый документ.
Свойству Visible желательно присвоить одно из значений. В противном случае, СОМ-Объект Ворд откроется в скрытом режиме. Но если пользователь откроет какой-нибудь файл, то наш редактируемый файл может неожиданно стать видимым. С другой стороны, если пользователь успеет открыть свой файл после запуска СОМ-Объекта, но перед тем, как будет выполнено присвоение свойству значения Ложь , то открытый файл станет невидимым и недоступным для редактирования пользователем.
В общем, лично я предпочитаю оставлять редактируемый документ в видимом окне.
Перейдем к неправильной части примера
Открывает файл, в терминологии Ворд открытый файл называется "документ". Далее нужно получить ссылку на открытый документ, чтобы потом по этой ссылке можно было с ним работать. Вы можете найти такие примеры:
Ну что ж, разумно. Предполагаем, что открыт только наш документ, соответственно в коллекции Documents есть единственный элемент, значит этот элемент имеет индекс равный единице. Это работает, вероятность того, что пользователь успеет открыть файл в промежуток времени, между запуском СОМ-Объекта и этим присваиванием, ничтожно мала.
Ну что ж, разумно. Последний открытый в Ворде документ становится активным, можно получить на него ссылку и так. Это работает, вероятность того, что пользователь успеет открыть еще один документ после открытия нашего и до получения ссылки на него ничтожно мала.
Примеры чуточку безумные:
WTF? Хотя, безусловно, работает. С теми же оговорками, что и выше.
Как программировать неправильно, выяснили, теперь о том, как открывать документы правильно.
Для открытия документа можно использовать два метода коллекции Documents . Первый - Open() приведен выше, второй - Add() .
Метод Open() открывает файл для редактирования в Ворде, документ остается связанным с этим файлом - в заголовке окна Ворд указывается имя файла. Открыть можно любой файл, поддерживаемый Вордом, формат файла при редактировании не меняется. Например, открыли файл .rtf, отредактировали, сохранили, файл остался .rtf. Открывать непосредственно шаблон из папки, в которой хранятся шаблоны таким способом не стоит. Если что-то произойдет не так, например, сработает автосохранение в Ворде, шаблон будет испорчен. Сначала файл шаблона следует скопировать (при работе в клиент-серверном варианте это само собой разумеющиеся действие), а потом можно открывать.
Метод Add() создает новый документ на основании указанного шаблона. Шаблоном может быть любой файл, не обязательно родные для Ворда .doc или .docx или .dot. Открытый документ с файлом-шаблоном не связывается, в заголовке окна Ворд будет надпись "Документ1 - Word". При этом информация о формате исходного файла не сохраняется. Открывается просто документ Ворд, содержащий в себе всю информацию из указанного файла. При сохранении без явного указания типа файла он будет сохранен как .docx. Единственное исключение - документ, открытый на основе файла .doc, такие документы по умолчанию сохраняются в файлы .doc. Метод Add() можно использовать для создания документов на основании оригинала шаблона, шаблон повредить невозможно даже случайно.
Методы Open() и Add() являются функциями, т.е. возвращают значение. Причем возвращают они ссылку на новый документ. И ловить потом этот документ в коллекции Documents нам не нужно, ссылку можно сразу сохранить в переменной для дальнейшего использования. Таким образом, для открытия используются следующие команды:
Когда шаблон заполнен требуемым образом его необходимо сохранить. Самый простой вариант, если файл открыли методом Open() , для сохранения достаточно вызвать метод Save() :
Если же документ еще не связан с файлом, нужно вызвать метод SaveAs() :
Если формат по умолчанию нас не устраивает, вторым параметром метода можно явно задать тип файла:
Обратите внимание, не стоит указывать расширение файла. Ошибки не будет, если расширение будет указано явно, например так:
Имеется в виду, что не будет ошибки времени выполнения. Однако, приведенный выше пример идеологически неверен. Допустим, через некоторое время шаблон был заменен и файл шаблона получил расширение .docx. Для внесения изменений в программу нам потребуется две правки, первая в методе Add() , вторая в методе SaveAs() . В этом и проблема, код дублируется, одно изменение должно вносится в одном месте программы, а не в разных. Если расширение файла не будет указано, при сохранении будет добавлено расширение, соответствующее типу сохраняемого файла. Если же расширение будет указано неверно, т.е. не будет соответствовать типу файла, то. либо получаем ошибку времени исполнения, либо файл сохранится в формате, не соответствующем расширению (в зависимости от комбинации тип/расширение возможно и то и другое). Обе ситуации ненормальны. Ошибка времени выполнения, конечно, будет отловлена на этапе тестирования. А ошибка несоответствия расширения фактическому типу данных выйдет потом боком пользователю.
Завершение работы с СОМ-Объектом рекомендуют (неправильно) делать так:
На первый взгляд, можно и не заметить нолик в параметре метода Quit() . А он важен. Это просто константа wdDoNotSaveChanges :-). Закрыться-то Ворд закроется, вместе со всеми файлами, которые пользователь, возможно, открыл и редактирует.
Если мы исходим из предположения, а мы из него исходим, что пользователь может работать интерактивно со своими собственными файлами, которые могут быть открыты в том же экземпляре Ворда, что и наш СОМ-Объект, то торопиться принудительно выгонять пользователей и закрывать экземпляр приложения не стоит. Можно проверить, есть ли еще открытые документы, кроме нашего. Если есть, не закрывать экземпляр Ворда, пусть пользователь спокойно работает, если других документов нет - закрыть:
Не очень популярный, но иногда встречающийся способ.
Сначала в документ добавляются пользовательские свойства. Для Ворда 2016 это делается так:
Пример файла прикладываю. Нужный номер/имя на первом листе, в верхнем -правом углу. Конечное имя документа может содержать как только цифры, так и букву с цифрами (в принципе разницы нет).
По всей видимости нужен макрос, который потом надо будет добавить кнопкой на панель, если не так то поправьте..
dbnsdbnsb.doc 137.5 Кб, 21 скачиваний с 2012-07-09
You don't have the permssions to download the attachments of this post.
2 Ответ от aap77 09.07.2012 12:22:07
Вот самый простой макрос. Выделяете номер документа, жмете на созданную Вами на панели инструментов, будет произведен запрос папки сохранения и и сохранение ативного документа в указанную папку с выделенным номером
Public Sub Test()
Dim FD As FileDialog
Dim FName As String
Dim Path As String
FName = Trim(Selection.Text)
Set FD = Application.FileDialog(msoFileDialogFolderPicker)
With FD
.AllowMultiSelect = False
.Title = "Сохранение документа " & FName
.ButtonName = "Сохранить"
End With
FD.Show
Path = FD.SelectedItems(1) & "\" & FName & ".doc"
ActiveDocument.SaveAs2 Path
End Sub
3 Ответ от Noodle 09.07.2012 13:23:28
4 Ответ от aap77 09.07.2012 14:29:06
Так в открывшемся меню, выберете папку которую вам нужно
5 Ответ от Noodle 09.07.2012 14:32:23
Так в открывшемся меню, выберете папку которую вам нужно
Объем большой, поэтому если это можно сделать макросом, то пожалуйста скажите как..
6 Ответ от Noodle 09.07.2012 14:35:01
Так в открывшемся меню, выберете папку которую вам нужно
Объем большой, поэтому если это можно сделать макросом, то пожалуйста скажите как..
Каждый раз выбирать папку, если документов больше тысячи, да и еще есть возможность промахнуться мимо нужной папки, что тоже может исказить желаемый результат..
7 Ответ от aap77 09.07.2012 14:38:51
Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
FName = Trim(Selection.Text)
FD = [здесь указывается папка сохранения]
Path = FD & "\" & FName & ".doc"
ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы
8 Ответ от Noodle 09.07.2012 14:53:12
Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
FName = Trim(Selection.Text)
FD = [здесь указывается папка сохранения]
Path = FD & "\" & FName & ".doc"
ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы
в каком формате указывать? Напрмер мне нужно на рабочи стол в папку "1". ТАкой путь будет правильным? C:\Users\user\Desktop\1
9 Ответ от Noodle 09.07.2012 15:09:17
Уже разобрался с форматом пути к папке.. Я написал правильно.. Спасибо большое за все, aap77!!
10 Ответ от Noodle 09.07.2012 15:12:49
Но если все таки можно сделать, чтобы макрос сам находил имя, под которым ему надо будет сохраниться - было бы великолепно.. параметрами для поиска можно взять "G00", например. Если появятся мыли как это реализовать - напишите здесь..
11 Ответ от aap77 09.07.2012 16:29:27
Да мысли в принципе есть, надо их проверить на других файлах, чтобы убедиться что по Вордовским понятиям они составлены одинаково
12 Ответ от Noodle 09.07.2012 16:34:21
Да мысли в принципе есть, надо их проверить на других файлах, чтобы убедиться что по Вордовским понятиям они составлены одинаково
Этот файл размножить и поменять номер накладной. Другие файлы идут, почти всегда , по возрастанию..
13 Ответ от aap77 09.07.2012 16:40:47
Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается
14 Ответ от Noodle 09.07.2012 16:48:16
Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается
Буква не меняется.. меняются только цифры.. в данный момент диапазон цифр дошел до G0010921, и с каждой накладной, номер соответственно увеличивается на единицу.
15 Ответ от Noodle 09.07.2012 16:50:03
Опять же хотелось бы уточнить диапазон букв например от A-Z и максимальное количество которое встречается
Буква не меняется.. меняются только цифры.. в данный момент диапазон цифр дошел до G0010921, и с каждой накладной, номер соответственно увеличивается на единицу.
Опять же, не всегда , на единицу.. бывает и на 2 и на 3 единицы..
16 Ответ от aap77 09.07.2012 17:33:57
Вот предварительный макрос в котором вы выбираете файлы которые надо пересохранить, выбираете папку куда сохранить, цикл автоматически открывает файлы, ищет в них комбинацию G00 и последущее число неразрывных чисел, сохранят в указанную папку и закрывает документ
17 Ответ от Noodle 10.07.2012 08:49:12
Вот предварительный макрос в котором вы выбираете файлы которые надо пересохранить, выбираете папку куда сохранить, цикл автоматически открывает файлы, ищет в них комбинацию G00 и последущее число неразрывных чисел, сохранят в указанную папку и закрывает документ
Спасибо за ваше рвение помочь. Но увы это не много не то, что мне нужно.. Я экспортирую файлы из программы в word, по одному . Экспортируются они с одинаковым именем "xxx.doc", и предварительно сохраняются в папке Temp, под тем же именем(xxx.doc). При экспорте следующего документа в Word (имя опять же xxx.doc), предыдущий удаляется и на его место сохраняется только что экспортированный документ. Поэтому смысл должен быть таков: Я вручную экспортирую документ из программы - применяю макрос - макрос должен найти номер накладной (например по параметру "G00") - потом макрос сохраняет этот файл в папку( указанную мной в макросе(напр. "C:\Users\user\Desktop\1")), с именем, которое будет идентичным номеру накладной.
18 Ответ от Noodle 10.07.2012 10:17:43
Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
FName = Trim(Selection.Text)
FD = [здесь указывается папка сохранения]
Path = FD & "\" & FName & ".doc"
ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы
Этот макрос работает, его надо только чуток доработать, добавив в него поиск и выделение номера накладной, по тому же параметру "G00". И я думаю все будет работать, если это выполнимо конечно.. Заранее спасибо.
19 Ответ от aap77 10.07.2012 14:38:09
Отредактировано aap77 (11.07.2012 09:49:24)
20 Ответ от Noodle 11.07.2012 08:31:01
Спасибо преогромнейшее. Несказанно рад, но макрос выдает ошибку:
For without Next
ScreenShot.JPG 60.92 Кб, 1 скачиваний с 2012-07-11
You don't have the permssions to download the attachments of this post.
21 Ответ от aap77 11.07.2012 08:59:12
Перед End Sub надо поставить Next Shp
22 Ответ от Noodle 11.07.2012 09:10:37
Перед End Sub надо поставить Next Shp
При нажатии кнопки "Debug", выскакивает окно Visual Basic с выделенной строкой :
Screen.JPG 53.93 Кб, 1 скачиваний с 2012-07-11
You don't have the permssions to download the attachments of this post.
23 Ответ от Noodle 11.07.2012 09:25:11
Команду закрытия документа после сохранения - желательно..
24 Ответ от aap77 11.07.2012 09:50:31
Теперь должно работать
25 Ответ от Noodle 11.07.2012 09:57:52
Ох спасибо вам огромное!! Заработало! не перевелись еще добрые люди в этом проклятом мире.. Спасибо Вам еще раз!
26 Ответ от aap77 11.07.2012 10:12:39
27 Ответ от can_do 21.09.2012 16:04:32
А есть продолжение?
Как работает этот поиск?
Или как сделать поиск по №, чтобы он включал все цифры после символа '№' в будущее имя файла.
28 Ответ от rbgjdew 20.02.2017 13:32:51
Public Sub Test()
Dim FD As String
Dim FName As String
Dim Path As String
FName = Trim(Selection.Text)
FD = [здесь указывается папка сохранения]
Path = FD & "\" & FName & ".doc"
ActiveDocument.SaveAs2 Path
End Sub
Где выделено жирным указывается путь папки сохранения и автоматически туда будут сохраняться документы
Скрин.jpg 33.52 Кб, файл не был скачан.
You don't have the permssions to download the attachments of this post.
Похожие темы
Сохранение Word-файла с именем из текста
В современном мире необходимо постоянно совершенствовать свои знания, чтобы идти вперед. Это касается буквально всего, даже такой, казалось бы, простой и понятной операции, как работа с текстом. На портале о Microsoft Office Word вы узнаете про: удаление сносок в ворде 2003.
Microsoft Word предоставляет практически неограниченные возможности для самосовершенствования, нужно только ими правильно воспользоваться. На портале о Microsoft Office Word вы узнаете про: как не нумеровать последнюю страницу. На форуме Ворд Эксперт как раз и обсуждаются пути оптимизации работы, посредством написания различных шаблонов и макросов для редактирования или форматирования, построения таблиц, списков стилей. На портале о Microsoft Office Word вы узнаете про: как проставить номера кроме первой страниц в word 2007.
Здесь вам подскажут оптимальные настройки программы в зависимости от стоящей задачи и помогут разобраться с тонкостями и отличиями различных версий. На портале о Microsoft Office Word вы узнаете про: может ли word работать с файлом формата а1. Для ленивых или очень занятых пользователей существуют готовые решения и возможность оставить заявку. Наш сайт о Microsoft Office Word даст ответ про: проблемы при переводе в pdf из pm65.
страницы
авторство
Можно ли как-то "пометить" файл Word, чтобы при случае можно было отличить одну его копию от другой? Или что можно сделать для того, чтобы сделать так, чтобы я мог отследить движение копий файла (я даю человеку файл и хочу знать, что он его не распространит)?
Тот же вопрос по форматам PPT/PPTX и PDF
Класс Абонент: Идентификационный номер, Фамилия, Имя, Отчество, Адрес, Номер кредитной карточки
Доброго времени суток. Помогите пожалуйста написать программу. Класс Абонент: Идентификационный.
Идентификационный номер
У меня есть справочник ЭкспрессКартриджи с реквизитом ИдентификационныйНомер Как при создании.
Присвоить документу нужный Unid
Здравствуйте! Возможно ли с использованием Lotus C/C++ API создать документ с определенным UNIDом.
Создать класс "Студент", имеющий имя (указатель на строку), курс и идентификационный номер
Создать класс студент, имеющий имя (указатель на строку), курс и идентификационный номер.
Добавлено через 33 секунды
ну не предусмотрен контроль версий в офисе, тем более удаленно.
в свойствах файла есть пункт подробно. там можно прописать теги. их как правило не смотрит 99,9% пользователей. этого может вполне хватить для контроля.й
Goro,
если надо, чтобы пользователи не видели, какая у них копия (хотя после прочтения этого форума, они уже будут уметь это делать), то надо сделать следующее:
почему ты что-то тегами называешь?
Добавлено через 4 минуты
нет такого пункта. Ты наверное имеешь ввиду вкладку "Прочие"? Но там нет никаких тегов. Там перечислены встроенные свойства документа. В эти свойства документа можно запихивать информацию. Кроме того, можно создавать свои свойства, но они не отображаются на вкладке "Прочие", и в них засовывать информацию.
можно попробовать и поглубже засунуть инфу. открыть текстовый файл с помощью winrar и поискать где можно прописать комментарий к файлу. правда куда и как я не представляю но поэкспериментировать ни кто не мешает.
Добавлено через 2 минуты
Busine2009, Тег (иногда тэг[1], англ. tag — «ярлык, этикетка, бирка; метить») — метка как ключевое слово, в более узком применении идентификатор для категоризации, описания, поиска данных и задания внутренней структуры. (Это из википедии)
какие теги и что за текстовые файлы?
Добавлено через 13 минут
javvva,
Вот как эти теги прописываются:
Файл - Свойства - Документ - Название "Копия 1" - Окей.
Речь идёт о разделе "Описание"? (на твоём скриншоте)
Busine2009, вообще то я насчитал 9 тегов которые можно изменить.
Добавлено через 12 минут
Busine2009, так что давай тренируйся. лично я знаю как их прописывать.
magirus, да не что не мешает. просто эти теги никто не смотрит. а тем более не сравнивает.
да. и на соседнем форуме предложили более действенное решение. хотя и спорное.
Зависит от способа маркирования .
Если я правильно вас понял задачу можно переформулировать следующим образом:
1) Cоздаём N копий оригинального документа и раздаём их N людям
2) Получив со стороны копию документа мы хотим установить копией какого экземпляра она является.
Тут возможны 2 принципиально разных подхода:
a) Мы делаем документ PDF, защищённый от модификации. И хотя эта защита довольно просто снимается - можно защитить копии документа различными паролями. C несколько меньшим успехом это можно проделать и с документами офиса.
b) Мы маркируем информацию стеганографическими методами. Например, в первой копии документа мы заменяем 5 и 8 вхождение одной из гласных "аео" на их латинские аналоги. Во второй копии делаем это с 6 и 9 вхождениями, в - третьей с 7 и 10 и т.д. и т.п. Это легко реализуется простейшим макросом. Естественно, это только простейший пример. Можно привязаться так же к количеству пробелов полсле запятой, незначащим нулям и т.д. Если количество копий не очень велико, проще всего всё сделать руками. В противном случае - макрос сериализатор.
Хорошим маркером при небольшом количестве копий является точный RGB цвет текста или внедрённого графического объекта.
Если документ - большой отчёт - достаточно поменять какую-нибудь цифру в некритическом числе.
Можно так же (как я уже писал) воспользоваться полем PRIVATE или просто поместить в документ руками скрытый текст.
Здесь очень многое зависит от характера распространяемого документа и от того можем ли мы сделать его документом только для чтения ( как правило это невозможно ибо да же тот же защищённый от распечатки PDF в момент прогоняется через что то типа пары Pasware Kit Enterprise + Abbyy Finereader) и от того какие возможные контр меры для затруднения идентификации экземпляра
могут быть предприняты.
Если вопрос серьёзный - я бы порекомендовал использовать комбинацию стеганографических маркеров.
Если же речь идёт о защите от "дурака", воспользуйтесь в MS Word, как я порекомендовал ранее, коллекцией Variables
Код:
ActiveDocument.Variables.Add Name:="User", Value:="Иван Иванов"
Вводить этот код можно в окне Immediate (Ctrl+G) VBE. Cмотрите HELP.
Как присвоить документу - пользователя и запретить другим его редактировать?
1С:Предприятие 8.3 (8.3.7.1860) Пользователь Создает документ в документе автоматически.
Макрос поиска по документу Word
Всем привет . Имеется макрос для поиска в word. После нажатия кнопки "далее" макрос ищет только.
Подключение к активному документу Word
Пытаюсь подключиться к активному документу, получается странная ерунда. Есть программа, которая.
Читайте также: