Передача параметра в word

Ну что сразу приходит на ум, так это использование Document Variables….

Значит, процедура в codemodule DrawPicture:

Public Sub InsertPicture()

MsgBox ActiveDocument.Variables(‘varPathToBMP’).Value

End Sub

И как ты понял, код в VB:

Private Sub Command1_Click()
Dim appWord As Word.Application
Dim docWord As Word.Document

Set appWord = New Word.Application

Set docWord = appWord.Documents.Add(Template:=’Focuments and SettingsAdministratorApplication DataMicrosoftTemplatesTest1.dot’)

‘ TODO: add check for already exist variable
docWord.Variables.Add Name:=’varPathToBMP’, Value:=’C:TEMPIncom.bmp’

appWord.Run MacroName:=’InsertPicture’

appWord.Quit

Set appWord = Nothing
End Sub

Это должно работать и с 97…
Я думаю, обработчик ошибок и прочее сделаешь сам…

Удачи..

На чтение 2 мин Опубликовано 15.10.2015

Вставляем свойства в документ Word

В прошлых статьях мы показывали, как настраивать дополнительные свойства и создавать пользовательские свойства в документе Word. Эти свойства можно вставить при помощи экспресс-блока Поле (Field). Что полезно, когда есть слова, фразы или значения, которые часто используются в документах.

Если слово, фразу или значение, которые многократно используются в документе, планируется изменять в будущих редакциях этого документа, то использование встроенного или пользовательского свойства будет весьма полезным. Вам достаточно изменить значение свойства только в одном месте, чтобы оно изменилось сразу во всём документе.

Чтобы вставить значение встроенного или пользовательского свойства, поставьте курсор в то место, куда его нужно вставить, и откройте вкладку Вставка (Insert).

Примечание: При вставке пользовательского свойства в документ, вставлено будет только его значение. Если Вы хотите дополнить (расшифровать) значение именем свойства, введите нужный текст прежде, чем вставлять само значение.

Вставляем свойства в документ Word

В разделе Текст (Text) вкладки Вставка (Insert) нажмите кнопку Экспресс-блоки (Quick Parts).

Примечание: Подписи этих кнопок могут не отображаться, когда окно Word открыто недостаточно широко. Если Вы не видите подпись кнопки, найдите иконку, указанную курсором на изображении ниже.

Вставляем свойства в документ Word

В появившемся меню нажмите Поле (Field).

Вставляем свойства в документ Word

В выпадающем списке Категории (Categories) выберите О документе (Document Information).

Вставляем свойства в документ Word

В списке Поля (Field names) кликните по DocProperty. В разделе Свойства поля (Field Properties), который расположен по центру диалогового окна, под заголовком Свойство (Property) появится список всех доступных свойств документа (как встроенных, так и добавленных Вами). Выберите из списка пользовательское свойство, которое хотите добавить в документ, и нажмите ОК.

Вставляем свойства в документ Word

Значение будет вставлено туда, где находится курсор.

Вставляем свойства в документ Word

Изменив значение пользовательского свойства, необходимо обновить поля, вставленные в документ, чтобы они отобразили это изменение. Для этого нужно выделить все поля в документе (или полностью весь документ) и нажать клавишу F9.

Оцените качество статьи. Нам важно ваше мнение:

Я
   MagicFly

15.01.09 — 12:34

Подскажите как можно из 1С передать параметр в Word? Например, я прописываю строку: Fnd.Execute(«<Диаметр>»,,,,,,,,,Диаметр,2);, где Диаметр у меня типа перечисление. При выполнение кода пишется ошибка: Плохой тип переменной.

   skunk

1 — 15.01.09 — 12:36

ясный фиг … откуда ворд может знать за перечесления эсины

   Torquader

2 — 15.01.09 — 12:36

Перечисление нужно преобразовать в строку, например Строка(Диаметр).
Тип «Перечисление» — это внутренний тип 1С и его вообще никуда передать нельзя.

  

MagicFly

3 — 15.01.09 — 12:37

(2)Ясно, спасибо за разъяснение!

AdBlock убивает бесплатный контент. 1Сергей

(Здесь действие происходит в модуле формы)

&НаСервере
Функция ЗаполнитьМакетНаСервере()
ОбработкаОб = РеквизитФормыВЗначение("Объект");

АктивныйДокумент = ОбработкаОб.ПолучитьМакет("МакетДоговораActiveDocument"); //ОболочкаActiveDocument

КомОбъект = АктивныйДокумент.Получить(); //метод работает на сервере

////////////ПЕРВЫЙ ВАРИАНТ ЗАПОЛНЕНИЯ ПАРАМЕТРОВ////////////
//инициализируем переменные, чтобы если какие-то из них окажутся незаполненными, то не отображалась текстовая ошибка в документе
КомОбъект.Variables("ДатаПриема").Value = " ";
КомОбъект.Variables("Организация").Value = " ";
КомОбъект.Variables("ЮрАдрес").Value = " ";
КомОбъект.Variables("Должность").Value = " ";
КомОбъект.Variables("ИНН_КПП_ОГРН").Value = " ";
КомОбъект.Variables("Адрес").Value = " ";
КомОбъект.Variables("ФИОСотрудника").Value = " ";

//заполнение переменных реальными значениями

КомОбъект.Variables("ДатаПриема").Value = "22 сентября 2017г";
КомОбъект.Variables("Организация").Value = "Миросса";
КомОбъект.Variables("ЮрАдрес").Value = "Санкт Петербург, Невский пр, д. 102";
КомОбъект.Variables("Должность").Value = "Генеральный директор";
КомОбъект.Variables("Адрес").Value = "Санкт Петербург, Невский пр, д. 102";
КомОбъект.Variables("ФИОСотрудника").Value = "Сергей Петрович";

//Книга.ActiveWindow.Visible = Истина; //?
//Книга.Activate(); //?
КомОбъект.Fields.Update();
////////////ВТОРОЙ ВАРИАНТ ЗАПОЛНЕНИЯ ПАРАМЕТРОВ////////////
Replace = КомОбъект.Content.Find;

FindText = "<<ФиоСокр>>"; // что искать - имя_шаблона
MatchCase = Ложь; // использовать регулярные выражения

MatchWholeWord = Истина; // искать слово целиком
MatchWildcards = Ложь; // испоьзовать регулярные выражения

MatchSoundsLike = Неопределено; // искать созвучные

MatchAllWordForms = Неопределено; // искать все формы слова
Forward = Истина; // искать вперед
Wrap = Неопределено; // что должен вернуть Find-объект

Format_ = Ложь; // использовать форматирование
ReplaceWith = "С.П."; // текст, на который надо заменить имя_шаблона

//Replace.Execute(FindText,Ложь,Истина,Ложь,,,Истина,,Ложь,ReplaceWith );

Replace.Execute(
FindText,

MatchCase,

MatchWholeWord,
MatchWildcards,

MatchSoundsLike,

MatchAllWordForms,
Forward,
Wrap,
Format_,
ReplaceWith );
Replace = КомОбъект.Content.Find; //перед каждым вызовом Execute()
Replace.Execute(
"<<ИНН_КПП_ОГРН>>",
MatchCase,
MatchWholeWord,

MatchWildcards,

MatchSoundsLike,

MatchAllWordForms,

Forward,
Wrap,
Format_,
"7802022" );

имяФ = ПолучитьИмяВременногоФайла("doc");
КомОбъект.SaveAS(имяФ); //здесь возможна ошибка (http://infostart.me/public/568913/)
Двоичные = новый ДвоичныеДанные(имяФ);

//в web клиенте Двоичные.Записать() не работает, поэтому
//Адрес = новый ХранилищеЗначения(Двоичные);
//возврат Адрес;
//а затем на клиенте:
//ПолучитьФайл(Адрес, "ИмяФайла.doc", Истина); //файл скачивается в браузере

КомОбъект.Application.Quit(); //закрыть Word
КомОбъект = 0;
Возврат Двоичные;

КонецФункции

&НаКлиенте
Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт

КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)
//Попытка
// Ворд = Новый COMОбъект("Word.Application");

//Исключение
// Сообщить("Установи Word..");
// Возврат;
//КонецПопытки;

Двоичные = ЗаполнитьМакетНаСервере();
имяФ = ПолучитьИмяВременногоФайла("doc"); //в web клиенте не работает
Двоичные.Записать(имяФ); //в web клиенте не работает
//ЗапуститьПриложение(имяФ); //error Использование синхронных методов на клиенте запрещено!

Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, имяФ,, Ложь); //ложь - не дожидаемся завершения приложения (в процедуру ЗапускПриложения всё равно заходим, сразу же

КонецПроцедуры

obrabotka Пример использования ActiveDocument _Word.

Как создать поля-параметры в Word

1 Выбираем участок(кусок текста) для параметра, например: «Организация»(на первой картинке она уже скрыта) , а можно удалить его и спозиционироваться на этом месте.

2 В меню Word, переходим на «Вставка», далее «Экспресс-блоки», далее «Поле»

3 В открывшемся диалоговом окне, выбираем тип «DocVariable»

4 Назначаем имя, в моем случае «NomerDogovora»

5. Жмем «Ок», когда окно закроется, вы скорей всего не увидите изменений, так как скрыт «Word kod», нажмите Alt+F9, что бы открыть код.
6. Таким образом создаете все нужные Вам параметры

Экспресс-блокиПоле
Отображение Variables
Итог.

Ссылки: http://www.modber.ru/catalog/item3340.html, http://j008.ru/ps/027_ActiveDocument

WordОвские файлы *doc, *docx — это ZIP-архивы ((*xls и *xlsx тоже)). Меняем расширение docx на zip и распаковываем архив. Получим структуру папокфайлов. Текст файлов в формате XML. Удобно редактировать текст, менять картинки(папка wordmedia). И собираем обратно, архивируем.

СоздатьКаталог(«C:времКаткат01»);

Архив = Новый ЧтениеZipФайла();
Архив.Открыть(«C:времКаткат01наименование.zip»);
Архив.ИзвлечьВсе(«C:времКаткат01Unpacked», РежимВосстановленияПутейФайловZIP.Восстанавливать);
Архив.Закрыть();

// что-то делаем
//ПутьИзменяемыйФайл = «C:времКаткат01Unpackedwordmediaimage1.png»; //для docx
//файл = новый файл(ПутьИзменяемыйФайл);
//Если НЕ Файл.Существует() Тогда
//

//КонецЕсли;

Архиватор = Новый ЗаписьZipФайла(«C:времКаткат01наименование2.zip», «», «»);
Архиватор.Добавить(«C:времКаткат01Unpacked*.*», РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
Архиватор.Записать();

УдалитьФайлы(«C:времКаткат01»);

Я делал так (пользовался формами).
1. MSWord -> RClick на панелях инструментов Ворда -> «Формы» (чтобы отобразить панель инструментов «Формы»)
2. На панели инструментов «Формы» — LClick «Текстовое поле» -> В документе появится текстовое поле (серенькое, если затенение полей формы включено)
3. RClick на появившемся поле в документе -> Свойства
4. В окне «Параменты текстового поля» -> «Параменты поля/Закладка:» вводим, например, «MyTextField1» -> ОК
5. В текстовом поле документа (сереньком) вводим какой-нибудь текст, например, «QWERTY»
6. В ВБА (Alt+F11) -> пишем:

Код: Выделить всё

Sub tt()
    MsgBox ThisDocument.FormFields.Item("MyTextField1").Range.Text
End Sub

7. F5 на макросе и видим на экране «QWERTY» ! Или «ЙЦУКЕН», как у меня, что в общем-то тоже радует глаз!

Я, кстати, ещё и защиту документа включал, чтобы «никто :wink: » не мог исправить ничего, кроме данных форм…

Пойдёт? Извиняюсь, что так подробно, вдруг всё-таки кто-ньть читать будет :)

Понравилась статья? Поделить с друзьями:
  • Передача данных с com порта в excel
  • Передача данных для excel
  • Передача данных в формат ms excel ms word access
  • Передача word по электронной почте
  • Передача excel с клиента на сервер