Документы Word из макросов Excel (Microsoft Excel)
У Эрика есть база данных Excel с информацией о компании. Он хочет использовать макрос Excel для копирования адресов и информации из базы данных в разные документы Word. Эрику любопытно, как он может заставить макрос Excel открывать конкретный документ Word, в который будет вставлена информация.
Один из способов выполнить эту задачу — просто не использовать Excel. Вместо этого используйте функцию слияния почты Word для извлечения информации из базы данных Excel.
Этот подход лучше всего работает, если вы создаете документ на основе четко определенной информации. Однако, если вам нужно открыть серию документов и скопировать данные из базы данных Excel в документы, то слияние почты не поможет.
Word имеет специальное имя для использования макросов для работы с различными приложениями Office: Office Automation. Создание макросов автоматизации Office немного сложнее, чем создание макроса, который будет работать исключительно в определенном приложении, например Excel. Одна из вещей, которую вы можете сделать, — это загрузить бесплатный файл справки, который содержит много информации о приложениях Office Automation. Вы можете скачать файл на следующей странице Microsoft:
http://support.microsoft.com/kb/302460
Основная процедура открытия документа Word из макроса Excel — это создание объекта, который ссылается на приложение Word, а затем использование этого объекта для открытия документа. Следующий код иллюстрирует эту концепцию:
Sub OpenWord() Dim wdApp As Object Dim wdDoc As Object Set wdApp = CreateObject("Word.application") Set wdDoc = wdApp.Documents.Open _ (FileName:="C:\Path\myTestDoc.doc") ' put your code here for working with Word ' This is Word VBA code, not Excel code wdDoc.Close savechanges:=False Set wdDoc = Nothing wdApp.Quit Set wdApp = Nothing End Sub
Вам нужно будет изменить путь и имя документа, который вы хотите открыть, но этот код очень хорошо демонстрирует, что нужно сделать, чтобы открыть документ. Как написано, документ Word (фактически, все приложение Word) не будет отображаться на экране. Если вы предпочитаете, чтобы приложение было видимым, вам следует использовать эту строку кода в начале макроса:
wdApp.Visible = True
Другой подход к работе с файлом Word из макроса Excel — использование DDE и функции SendKeys для копирования информации.
Рассмотрим следующую команду DDE:
ChannelNumber=Application.DDEInitiate{ _ app:="WinWord", topic:=FullPath
Метод DDEInitiate использует два свойства: приложение и тема. Свойство app указывает приложение, которое вы открываете через DDE. Типичными примерами могут быть «calc» для калькулятора или «WinWord» (в данном случае)
для приложения Word. Свойство темы указывает полный путь к файлу документа, который вы открываете. В этом случае полный путь содержится в переменной FullPath.
Используя этот метод, вы можете открыть документ, а затем использовать SendKeys для копирования информации в этот документ:
Sub PasteExcel2Word() Dim channelNumber As String 'Application Handle Dim FullPath As String FullPath = 'C:\MyFolder\MyFile.Doc' 'Replace above with a file or loop of files Selection.Copy 'Assumes you hilighted what you want copied channelNumber = Application.DDEInitiate( _ app:="WinWord", topic:=FullPath SendKeys "^v", False Application.DDETerminate channelNumber End Sub
Метод Copy используется для копирования информации в буфер обмена, а затем SendKeys использует ^ v (Ctrl + V) для вставки информации в документ Word, открытый с помощью DDEInitiate.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2423) применим к Microsoft Excel 97, 2000, 2002 и 2003.