Открывать Word из Excel, передавать переменные и текст (макрос VBA), удаленное управление Word. Vba в word из excel


Очень простой пример управления Word из Excel с помощью VBA — Трюки и приемы в Microsoft Excel

Этот метод может оказаться очень полезным, например, если у вас есть стандартный документ с таблицами, заполненными данными макросами из таблиц Excel. Вы можете запустить макрос, и данные будут перенесены в таблицы в документе Word.

Недавно у меня была задача по написанию программы по заполнению отчета по SLA (Service Level Agreement — уровень сервисных соглашений). Отчет по SLA был представлен в виде документа Word с множеством таблиц и других данных, которые были заполнены из девяти таблиц Excel.

Используя вышеописанный метод, я мог написать VBA-код, работающий с отдельными таблицами, собирающий в них нужную информацию, а затем размещающий ее в таблицах или диаграммах документа Word. Перемещая подобным образом данные вручную, я бы потратил на это несколько дней, но при использовании кода вся работа была сделана за пять минут.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sub Test_Word() Dim Owd As Word.Application, oWdoc As Word.Document Dim or As Word.Range, ot As Word.Table Set oWd = CreateObject("Word.Application") Set oWdoc = oWd.Documents.Add Set or = oWdoc.Range Set ot = oWdoc.Tables.Add(r, 4, 5) ot.Cell(1, 1).Range.Text = "test" oWdoc.SaveAs ("C:\MyTest.docx") ' Вы можете указать свой путь oWdoc.Close oWd.Quit Set oWdoc = Nothing Set oWd = Nothing End Sub

Sub Test_Word() Dim Owd As Word.Application, oWdoc As Word.Document Dim or As Word.Range, ot As Word.Table Set oWd = CreateObject("Word.Application") Set oWdoc = oWd.Documents.Add Set or = oWdoc.Range Set ot = oWdoc.Tables.Add(r, 4, 5) ot.Cell(1, 1).Range.Text = "test" oWdoc.SaveAs ("C:\MyTest.docx") ' Вы можете указать свой путь oWdoc.Close oWd.Quit Set oWdoc = Nothing Set oWd = Nothing End Sub

Действие этого примера можно повторить и вручную, копируя и вставляя данные, но при этом вы должны быть очень усидчивым и трудолюбивым, чтобы проделать такую работу. Это хороший пример применения языка макросов, который наделяет пользователя большими возможностями по автоматизации задач в приложениях Microsoft Office и позволяет работать вне структуры меню программ Microsoft.

excelexpert.ru

Открывать Word из Excel, передавать переменные и текст (макрос VBA), удаленное управление Word

Я совершенно не знаком с VBA, особенно в разных программах, но я создал себе небольшую реальную задачу, которая быстро усложнилась, кто-то может дать мне несколько указателей или фрагментов кода, чтобы попробовать следующее:

У меня есть файл Excel, который заполнен именами и номерами (см. ниже), и я хотел бы перевести их отдельно в документ Word.

Если я выделил ячейку А2 и нажмите на кнопку [], я хочу Слово, чтобы открыть автомагически и введите что-то вроде

- "Привет Майк, текущая сумма $ 12,37 и вы живете в 23 One Street. Спасибо. "-

Сумма должна быть выделена жирным шрифтом, и после этого Word должен сохранить файл и закрыть его без необходимости ввода.

Аналогично, когда я выбрал A3, он должен открыть другой документ, написать тот же текст, но с заполненными переменными Джулии сохранить его в указанное место и закрыть.

A B C 1 Name Address Amount 2 Mike 23 One Way $12.37 3 Julia 3949 Street $39.23 [BUTTON]

Так, по существу, я предполагаю, что я пытаюсь «дистанционное управление» Слово внутри Excel и покормить некоторые переменные из Excel в Word. Честно говоря, я полностью потеряю, как это сделать.

То, что я нашел до сих пор это:

Dim wdApp As Word.Application, wdDoc As Word.Document On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err.Number <> 0 Then 'Word isn't already running Set wdApp = CreateObject("Word.Application") End If On Error GoTo 0 Set wdDoc = wdApp.Documents.Open("C:\temp\[NAME AFTER SELECTED FIELD A2].docx") wdApp.Visible = True ...

Теперь я не знаю, что делать! Как передать стандартный текст с переменными из строки выбранного поля в Word? Как отформатировать их (жирный, Arial, красный и т. Д.)? Как сохранить указанное имя файла?

Возможно ли это сделать? Я знаю, что VBA очень мощный, поэтому я надеюсь, что вы можете мне помочь! Я использую Office 2013, поэтому любые оговорки, связанные с макро-программированием или языком VBA, должны учитывать это.

Большое вам спасибо!

stackoverrun.com

VBA Macro - экспортировать данные таблицы из файла Excel в Word и создать раздел для каждого листа

Я использую макрос в VBA для экспорта данных из Excel в Word.

Sub ExportToWord() Set obj = CreateObject("Word.Application") obj.Visible = True Set newobj = obj.Documents.Add For Each ws In ActiveWorkbook.Sheets ws.UsedRange.Copy newobj.ActiveWindow.Selection.PasteExcelTable False, False, False newobj.ActiveWindow.Selection.InsertBreak Type:=7 Next newobj.ActiveWindow.Selection.TypeBackspace newobj.ActiveWindow.Selection.TypeBackspace obj.Activate newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\OLD\" & Split(ActiveWorkbook.Name, ".")(0) End Sub

Все данные и макет таблицы извлекаются в Word. Процедура будет копировать usedRange каждого рабочего листа в Word и разбиение страницы на каждый рабочий лист.

Я хотел бы обновить этот скрипт, поместив имя рабочего листа непосредственно перед копированием/вставкой данных для каждого рабочего листа.

Не могли бы вы рассказать мне, как это сделать?

После обновленный код:

Sub export_workbook_to_word() Dim sheetName As String Set obj = CreateObject("Word.Application") obj.Visible = True Set newobj = obj.Documents.Add For Each ws In ActiveWorkbook.Sheets sheetName = ws.Name ws.UsedRange.Copy newobj.ActiveWindow.TypeText ws.Name newobj.ActiveWindow.Selection.PasteExcelTable False, False, False newobj.ActiveWindow.Selection.InsertBreak Type:=7 Next newobj.ActiveWindow.Selection.TypeBackspace newobj.ActiveWindow.Selection.TypeBackspace obj.Activate newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0) End Sub

я получить ошибку Object doesn't support this property or method на линии newobj.ActiveWindow.TypeText ws.Name

Не могли бы вы мне помочь?

excel excel-vba ms-word worksheet98

stackoverrun.com

Вставка VBA в Word из Excel MS Excel онлайн

  1. У меня есть электронная таблица, которая генерирует текстовый документ, форматирует его, а затем добавляет кучу текста в документ, основываясь на том, что было выбрано и введено в электронную таблицу. Все это отлично работает.
  2. То, что я пытаюсь сделать, – это как-то вставить код VBA в документ Word во время его создания в Excel.

Вот конкретный код, который я пытаюсь вставить – в конечном итоге это нужно перейти в Word VBA:

Private Sub Document_Close() ActiveDocument.Saved = True End Sub

Я не могу заставить Excel вставить этот код в документ Word , который создается. Я знаю, что это возможно, но не могу понять. Я пробовал несколько вещей, и он принимает мой код, но я понятия не имею, где он вставлен, потому что, когда я ищу вставленные строки, я не могу их найти.

Вот код, который я использую для создания Word documen t. Может кто-нибудь, пожалуйста, взгляните и дайте мне знать, как вставить вышеуказанный код в этот документ? Спасибо за любую помощь, которую вы можете дать.

Set wrdApp = CreateObject("Word.Application") Set wrdDoc = wrdApp.Documents.Add With wrdApp.Selection 'A bunch of formatting code and text inputting is listed here for the word document. End With wrdApp.Visible = True wrdApp.Activate
Solutions Collecting From Web of "Вставка VBA в Word из Excel"

Если вы установили Word, чтобы доверять программному доступу к проекту VBA тогда:

Sub ExceltoWord() Dim strIn As String strIn = "Private Sub Document_Close()" & Chr(10) & " ActiveDocument.Saved = True" & Chr(10) & "End Sub" Set wrdApp = CreateObject("Word.Application") Set wrddoc = wrdApp.Documents.Add wrddoc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString strIn wrdApp.Visible = True wrdApp.Activate End Sub

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

excel.bilee.com

vba - Создание документов Word (в Excel VBA) из серии шаблонов документов

Привет всем. Я постараюсь сделать это кратким и простым. :)

У меня есть

  1. 40 или так шаблонных текстовые документы с серией полей (имя, адрес и т.д.), которые должны быть заполнены. Это исторически делается вручную, но это повторяющийся и громоздким.
  2. Книга, в которой пользователь заполнил огромный набор информации о человеке.

Мне нужен

  • Путь к программно (из Excel VBA) открыть эти стереотипные документы, редактировать в значении полей от различных именованных диапазонов в книге, и сохранить заполненный шаблонов в локальную папку.

Если бы я использовал VBA программно редактировать определенные значения в наборе таблиц, я хотел бы изменить все эти таблицы содержит набор именованных диапазонов, которые могут быть использованы в процессе автоматического заполнения, но я не знакомы с какой-либо функцией «named field» в документе Word.

Как я могу редактировать документы и создавать процедуру VBA, чтобы я мог открыть каждый документ, найти набор полей, которые могут потребоваться заполнить, и заменить значение?

Например, то, что работает, как:

for each document in set_of_templates if document.FieldExists("Name") then document.Field("Name").value = strName if document.FieldExists("Address") then document.Field("Name").value = strAddress ... document.saveAs(thisWorkbook.Path & "\GeneratedDocs\ " & document.Name) next document

Вещи я Рассмотренные:

  • Mail Merge - но этого недостаточно, потому что она требует открытия каждого документа вручную и структурирования книги как источник данных, я вроде как хочу наоборот. Шаблоны являются источником данных, и рабочая тетрадь выполняет итерацию через них. Кроме того, слияние почты предназначено для создания множества идентичных документов с использованием таблицы разных данных. У меня много документов, которые используют одни и те же данные.
  • Использование текста заполнителя, такого как «# NAME #», и открытия каждого документа для поиска и замены. Это решение, к которому я бы прибегнул, если не предлагается ничего более элегантного.

excel-vba ms-word documentation-generation40k

stackoverrun.com

Программы и макросы Excel в категории Документы Word

Программы и макросы для создания и заполнения документов Word данными из Excel, таблица из Excel в Word, обработка файлов Word, подстановка данных из Excel в Word, вставить таблицу Excel в Word

  • Надстройка FillDocuments предназначена для формирования (подготовки) документов по шаблонам, с заполнением созданных файлов данными из текущей книги Excel, с возможностью отправки писем. В качестве шаблонов могут выступать следующие типы файлов: шаблоны и документы Word (расширения DOC, DOCX, DOCM, DOT, DOTX, DOTM) шаблоны и книги Excel (расширения XLS, XLSX, XLSM, XLSB, XLT, XLTX, XLTM)...

  • Макрос предназначен для программного создания документов Word на основе шаблона (без использования функции слияния в Word) В прикреплённом к статье архиве находятся 2 файла: шаблон договора в формате Microsoft Word (расширение .dot) файл Excel с макросом Настройки макроса задаются в коде: Const ИмяФайлаШаблона = "шаблон.dot" Const КоличествоОбрабатываемыхСтолбцов = 8...

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

  • Function PasteOLEobject(ByVal filename$, ByRef TopLeftCell As Range, _ Optional ByVal Width%, Optional ByVal Height%) As ShapeRange ' вставляет на лист объект OLE (из файла filename$) ' и размещает его в нужном месте, совмещая левый верхний угол с ячейкой TopLeftCell ' если указаны размеры Width% или Height% - они задаются вствляемому объекту On Error...

  • Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов. АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения. Программа обеспечивает: Хранение полной...

  • База данных «Преподаватели» предназначена для автоматизации работы администрации учебных заведений. Программа обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Эта база данных представляюет собой урезанную и немного изменённую версию программы АИСС СПК. Программа обеспечивает: Хранение полной...

  • Программа предназначена для заполнения шаблонов MS Word для дальнейшей распечатке на этикеточном принтере В качестве исходных данных для макроса используется файл MS Excel в котором находятся следующие поля: Индекс Город Улица Название организации Макрос позволяет заполнять шаблоны с 24-мя и 10-ю ячейками на листе. Скриншот результата работы макроса: Смотрите также программу...

  • Программа предназначена для автоматизации рабочего места сотрудника, отвечающего за регистрацию, прием на работу, и увольнение иностранных граждан. В качестве исходных данных используется таблица изображенная на скриншоте. В этой таблице содержится нужная информация, необходимая для заполнения шаблонов документов. Программа заполняет следующие документы: Доверенность (doc) Заявление на...

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

  • Программа предназначена для быстрого поиска перевода выделенного в документе Word слова (или фразы) с использованием специализированного медицинского словаря. Для поиска переводов используется словарь, расположенный на сайте заказчика. Программа подключается к словарю через веб-интерфейс сайта, авторизуется (логин и пароль хранятся в отдельном текстовом файле), после чего производит поиск...

  • Функция предназначена для вывода информации (статистики) по всем листам документа Word.   В качестве параметра, функция получает ссылку на открытый документ Word. Результат работы функции представлен на скриншоте. Код функции WordDocumentProperties: Function DocumentProperties(ByRef doc As Object) As Variant On Error Resume Next: Err.Clear ' формирует статистику по документу...

excelvba.ru

vba - Обновление связанных полей в документе Word из Excel VBA

Я пытаюсь автоматически обновлять определенную информацию (например, имена, даты и цифры) в трех разных документах Word, помещая данные в электронную таблицу и связывая их с соответствующими ячейками из Word. В электронной таблице есть несколько Макросов, которые автоматически обновляют части электронной таблицы внутри.

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

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

Sub UpdateFields() ActiveDocument.Fields.Update End Sub

Я также пытался обновить документы Word непосредственно из электронной таблицы, но это тоже не сработает, потому что, когда Excel пытается открыть документ Word через VBA, программа прекращает выполнение и бросает эту ошибку:

"Excel ожидает, что другое приложение завершит действие OLE".

Щелчок ОК и ожидание не помогают, потому что сообщение об ошибке появляется через несколько секунд, и единственный способ остановить его - это вручную убить процесс Excel.

Здесь мой код макроса Excel:

Sub LoopThroughFiles() Path = Application.ActiveWorkbook.Path Dim WordFile As String WordFile = Dir(Path & "\*.doc") Do While Len(WordFile) > 0 Run Update(Path & "\" & WordFile) WordFile = Dir Loop End Sub Function Update(Filepath As String) Dim WordDoc As Word.Document Set WordApplication = CreateObject("Word.Application") Set WordDoc = WordApplication.Documents.Open(Filepath) 'This produces the error ActiveDocument.Fields.Update End Function

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

Я искал решения в Интернете, но на самом деле я ничего не нашел, что мне показалось странным, так как кажется довольно распространенным явлением, что кто-то будет делать с VBA. Опять же, у меня очень мало опыта работы с VBA, поэтому я мог бы полностью упустить эту точку, и есть супер простое решение, о котором я просто не знаю.

qaru.site