#vba #ms-word #visio
#vba #ms-word #визио
Вопрос:
Я создаю инструмент в Visio для рисования электронных дизайнов. Когда закончите, проекты тезисов должны быть скопированы в документ Word для дальнейшего написания и описания проектов. Я борюсь с кодом VBA в Visio, чтобы скопировать страницу Visio в документ word. Желательно, чтобы я открыл существующий шаблон word и скопировал дизайн Visio после заданного заголовка Word или около того, но пока мне удалось создать только новый пустой документ Word, но я не могу найти способ ссылаться на документ word.
Может ли кто-нибудь помочь мне с тем, как вставить выбранную диаграмму в приложение Word, пожалуйста? Это код Visio, с которым я борюсь:
Public Sub CopyVsoPgToWord()
Dim objWord
Dim objDoc
Dim vsoPage As Visio.Page
Dim DocName As String
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add
ActiveWindow.SelectAll
Application.ActiveWindow.Selection.Copy
With objDoc
.Paste 'this doesnt work
'past the Visio diagram into word page 2
End With
Конец Подводной лодки
Ответ №1:
Метод Paste появляется в нескольких классах, таких как Range
, поэтому вам просто нужно найти один из них. Свойство содержимого Document
даст вам Range
, но вы можете изменить это в зависимости от того, куда вы хотите вставить объект.
Возможно, вам также будет проще добавить ссылку на объектную модель Word (через Tools / References / Microsoft Word).
В любом случае, попробуйте это:
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Add("C:Program Files (x86)Microsoft OfficerootTemplates1033OriginReport.Dotx")
Dim vApp As Visio.Application
Dim vSel As Visio.Selection
Set vApp = Visio.Application
Set vSel = vApp.ActivePage.CreateSelection(visSelTypeAll, Visio.VisSelectMode.visSelModeSkipSuper)
vSel.Copy
wdDoc.Content.Paste
(Здесь также будет работать выделение из окна)
Комментарии:
1. Джон, спасибо за ответ на мой вопрос. Извините, но я получаю ошибку компиляции в инструкции Me.Application. Что мне нужно сделать, чтобы решить эту проблему?
2. Это примечание о том, что оно находится в этом документе. Если вы просто работаете в обычном модуле, вы можете избавиться от «Я». и, на самом деле, вы можете избавиться от него в любом случае, поскольку для Visio это глобальное свойство по умолчанию. Я думаю, что каждый раз, когда вы имеете дело с несколькими объектными моделями (в данном случае Visio и Word), стоит попытаться быть явным, поэтому, вероятно, эта строка может быть лучше:
Set vApp = Visio.Application