【问题标题】:How to copy a drawing from a Visio page to Word document如何将绘图从 Visio 页面复制到 Word 文档
【发布时间】:2020-11-27 10:30:20
【问题描述】:

我正在 Visio 中制作一个工具来绘制电子设计。完成后,应将这些设计复制到 Word 文档中,以便进一步撰写和描述设计。我正在努力使用 Visio 中的 VBA 代码将 Visio 页面复制到 word 文档中。最好我会打开一个现有的 word 模板并在给定的 Word HEADING 左右之后复制 Visio 设计,但现在我只设法创建一个新的空 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

结束子

【问题讨论】:

    标签: vba ms-word visio


    【解决方案1】:

    Paste 方法出现在许多类中,例如Range,因此您只需要找到其中一个即可。 DocumentContent 属性将为您提供 Range,但您可以根据要插入对象的位置进行更改。

    您可能还会发现添加对 Word 对象模型的引用更容易(通过工具/引用/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 Office\root\Templates\1033\OriginReport.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
    

    (您从窗口中获得的选择也可以在这里使用)

    【讨论】:

    • 约翰,感谢您回答我的问题。抱歉,我在 Me.Application 语句中遇到编译错误。我需要做什么来解决这个问题?
    • 这是关于在 ThisDocument 中的说明。如果你只是在一个普通的模块中,那么你可以取消“我”。而且,事实上,你可以取消它,因为对于 Visio,它是默认的全局属性。我认为任何时候你处理多个对象模型(在这种情况下是 Visio 和 Word)都值得尝试明确,所以这条线可能会更好:Set vApp = Visio.Application
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多