Форум Excel-vba

Основные форумы => Вопросы по Excel и VBA => Тема начата: iliya от 07.02.2023, 11:30:55

Название: VBA. Как получить доступ к объекту Ворда который я вставил в Эксель?
Отправлено: iliya от 07.02.2023, 11:30:55
У меня макрос использует файл Ворда как шаблон, копирует и редактирует его, и я получал готовый ворд документ. Ворд документ находился в одной папке с файлом Экселя. Я вставил Ворд документ как объект в Ексель. Как теперь получить к нему доступ? (копировать и т.д). Раньше я использовал FileCopy (путь файла) (имя файла) и все получалось. Но документов Ворда становится больше и удобнее будет если будет только файл Ексель, а документы Ворда будут скрыты внутри него
Название: Re:VBA. Как получить доступ к объекту Ворда который я вставил в Эксель?
Отправлено: Дмитрий Щербаков(The_Prist) от 07.02.2023, 13:19:02
Вы хоть напишите как внедряете...Если как объект в виде значка, то можно схитрить и открывать его, потом передавать управление в Word и делать все там(в этой статье описано чуть более подробно: Как из Excel обратиться к другому приложению (https://www.excel-vba.ru/chto-umeet-excel/kak-iz-excel-obratitsya-k-drugomu-prilozheniyu/)). А вот пример, как открыть файл из вставленного как значок на лист объекта и обратиться к нему:
Sub ChangeWorkdFromExcelSheet()
    Dim v
    Dim objWrdApp As Object, objWrdDoc As Object
   
    Set v = ActiveSheet.DrawingObjects("word_object")
    v = v.Verb(Verb:=xlOpen)
    If v = True Then
        On Error Resume Next
        'пытаемся подключится к объекту Word
        Set objWrdApp = GetObject(, "Word.Application")
        If Not objWrdApp Is Nothing Then
            Set objWrdDoc = objWrdApp.activedocument
            'записываем слово "Привет" в документ из листа
            objWrdDoc.Range.Text = "Привет и пока"
            'закрываем документ Word c сохранением
            objWrdDoc.Close True
        End If
        objWrdApp.Quit
    End If
End Sub

имя объекта взял ниоткуда - "word_object". У это имя может быть другим.