Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba VB代码将Visio文档的特定页面放置到Word中_Vba_Ms Word_Visio - Fatal编程技术网

Vba VB代码将Visio文档的特定页面放置到Word中

Vba VB代码将Visio文档的特定页面放置到Word中,vba,ms-word,visio,Vba,Ms Word,Visio,我一直在开发Word宏,其中包括一个步骤,允许用户选择Visio文件并将其插入到活动Word文档中。由于许多源Visio文件都是多页的,并且要放置在Word中的特定Visio绘图可能位于Visio文档的任何页面上,因此我需要一种方法,允许用户选择要放置的页面 当前,我的VBA代码使用AppApplication.FileDialog(msoFileDialogFilePicker)为Visio绘图的文件路径(myVisioPath)设置变量,然后为Visio文件创建变量并将其插入Word文档,如

我一直在开发Word宏,其中包括一个步骤,允许用户选择Visio文件并将其插入到活动Word文档中。由于许多源Visio文件都是多页的,并且要放置在Word中的特定Visio绘图可能位于Visio文档的任何页面上,因此我需要一种方法,允许用户选择要放置的页面

当前,我的VBA代码使用AppApplication.FileDialog(msoFileDialogFilePicker)为Visio绘图的文件路径(myVisioPath)设置变量,然后为Visio文件创建变量并将其插入Word文档,如下所示:

Dim myViz As InlineShape
Set myViz = ActiveDocument.InlineShapes.AddOLEObject(ClassType:="Visio.Drawing.15", FileName:=myVisioPath, LinkToFile:=False, DisplayAsIcon:=False, Range:=Selection.Range)
myViz.Select `Selects the Visio for subsequent actions`


宏的当前工作版本将选择所选Visio文件第1页上的内容。我需要一种方法,允许用户选择第2页、第3页或Visio文件中目标图形所在的任何页面。目前,我正在考虑创建一个允许选择页码的用户表单,但我愿意接受建议。

马修·金登(Mathieu Guindon)的帖子引导我找到了答案(本来会投票选为答案,但这似乎不是一个选项)。无论如何,在上发布的代码为我的解决方案提供了基础。为Visio.Application对象设置一个变量,并引用该变量以获取用户选择的Visio文件的页数(如果用户选择了文件中不可用的页码,则用于错误捕获)和复制用户选择的页面。

如果需要操作Visio文档,则需要使用Visio的对象模型。Visio文档对象引用位于
myViz.OLEFormat.object
中。