Открывать 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, он должен открыть другой документ, написать тот же текст, но с заполненными переменными Джулии сохранить его в указанное место и закрыть.
Так, по существу, я предполагаю, что я пытаюсь «дистанционное управление» Слово внутри 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 и разбиение страницы на каждый рабочий лист.
Я хотел бы обновить этот скрипт, поместив имя рабочего листа непосредственно перед копированием/вставкой данных для каждого рабочего листа.
Не могли бы вы рассказать мне, как это сделать?
После обновленный код:
я получить ошибку 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 онлайн
- У меня есть электронная таблица, которая генерирует текстовый документ, форматирует его, а затем добавляет кучу текста в документ, основываясь на том, что было выбрано и введено в электронную таблицу. Все это отлично работает.
- То, что я пытаюсь сделать, – это как-то вставить код 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.ActivateSolutions Collecting From Web of "Вставка VBA в Word из Excel"
Если вы установили Word, чтобы доверять программному доступу к проекту VBA тогда:
Если код, который вы хотите вставить в Word, является постоянным (как это и должно быть), вы можете вручную создать файл Word с уже существующим кодом, а затем использовать этот файл в качестве шаблона вместо того, чтобы начинать с полностью пустого документа Word.
excel.bilee.com
vba - Создание документов Word (в Excel VBA) из серии шаблонов документов
Привет всем. Я постараюсь сделать это кратким и простым. :)
У меня есть
- 40 или так шаблонных текстовые документы с серией полей (имя, адрес и т.д.), которые должны быть заполнены. Это исторически делается вручную, но это повторяющийся и громоздким.
- Книга, в которой пользователь заполнил огромный набор информации о человеке.
Мне нужен
- Путь к программно (из 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
Программы и макросы для создания и заполнения документов Word данными из Excel, таблица из Excel в Word, обработка файлов Word, подстановка данных из Excel в Word, вставить таблицу Excel в Word
|
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