MyTetra Share
Делитесь знаниями!
Открыть Word из Excel - Макросы в Excel
Время создания: 16.03.2019 23:43
Раздел: !Закладки - VBA - Word
Запись: xintrea/mytetra_db_adgaver_new/master/base/1512822029d2qv9am4q4/text.html на raw.githubusercontent.com

analitica.jimdo.com

Открыть Word из Excel - Макросы в Excel

3-4 минуты


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

Чтобы открыть Word из Excel пишем:

    ' запустить Word им сделать его видимым 

    Set wa = CreateObject("Word.Application")

        wa.Visible = True

    ' открыть конкретный файл, wd_full_name - полное имя файла, включая путь к нему

    Set wd = wa.Documents.Open(wd_full_name)

Теперь любые операции с этим файлом возможны при обращении к нему по заданному нами имени - wd. Например,

    wd.Save

    wd.Close

Собственно, таким образом можно открыть Word из любого приложения, а не только из Excel. Аналогично обстоит дело и с другими приложениями. Например, вот так открывается Excel.

    Set xl = CreateObject("Excel.Application")

    xl.Visible = True

    Set xlfile = xl.Workbooks.Open(xlfile_full_name)

Не забываем определять переменные xl и xlfile (хотя иногда это не приводит к ошибке). Причем лучше определять их не как объекты конкретного класса ( Dim xlfile As Workbook), а как просто абстрактный объект - Dim xlfile AsObject. Практика показывает, что так возникает гораздо меньше ошибок.

Слияние Word и Excel нужно, когда нужно делать много стандартных документов. Создаем шаблон документа, настраиваем слияние, проставляем поля. Теперь заполняем строки в Excel. Создание 10 шаблонных документов потребует от нас следующих действий:

- нажать на стрелку для перехода на нужную строку

- сохранить Word как новый документ в нужную папку

и так 10 раз.

А если нужно сделать 50 документов?

Чтобы не заниматься глупым нажатием на стрелку, можно доверить генерацию макросу (до этого назовем нужный вордовский файл myfile):

    With myfile.MailMerge

        .MainDocumentType = wdFormLetters

        .OpenDataSource Name:=myfile_name, SQLStatement:="SELECT * FROM     `'тут_название_excel-файла$'`", _

        ConfirmConversions:=True, ReadOnly:=False, LinkToSource:=True, _

             Revert:=False, _

        SubType:=wdMergeSubTypeAccess

        .ViewMailMergeFieldCodes = False

    End With

    ' открываем нужную запись в рассылке, допустим n-ную

    myfile.MailMerge.DataSource.ActiveRecord = n

    ' сохраняем в нужную папку

    myfile.SaveAs Filename:=myfile_new_name, FileFormat:=wdFormatDocument, LockComments:=False, Password:="",addToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

    myfile.Close

Обратите внимание, что слияние должно быть предварительно настроено. Нет смысла проставлять поля слияния макросом, это долго и неэффективно. Использовать же готовый шаблон можно легко и быстро.


 
MyTetra Share v.0.59
Яндекс индекс цитирования