Word VBA: 另存为图片
Word VBA: Save as Picture
有谁知道是否可以 运行 来自 VBA 的 Word“另存为图片”对话框?
笔记:
我搜索了高低都无济于事,这表明它可能是不可能的。
不过,我认为至少值得一问。
澄清(按要求):这个问题就是问的。
在询问时,我无法在任何地方找到答案。在进行此编辑时,这是我所知道的唯一可以回答这个问题的地方(即基本问题可以这样做吗?如果可以的话如何做?)。
事实证明,是的,这是可以做到的(见下文了解如何做)。而且,虽然可能有其他方法可以通过唤起架构上不同的方法(我在提问时已经看到)来做类似的事情,但他们没有按要求回答问题。
现在,我看不出有什么不清楚的地方或为什么需要它或更多详细信息。
所以现在我问:在 SO 上提出这样的问题是否存在根本性错误?
您可以使用 PowerPoint 导出图形。这是最近导出世界地图的项目中的一个宏。 Word 图形是 EMF 文件:
Public Sub ExportMap()
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim pptShapeRange As PowerPoint.ShapeRange
Dim Path$, File$
Dim oRange As Range
Application.ScreenUpdating = False
myDate$ = Format(Date, "m-d-yyyy")
Set pptApp = CreateObject("PowerPoint.Application")
Path$ = ActiveDocument.Path & Application.PathSeparator
File$ = "WorldMap " & myDate$ & ".png"
Set pptPres = pptApp.Presentations.Add(msoFalse)
Set oRange = ActiveDocument.Bookmarks("WholeMap").Range
oRange.CopyAsPicture
Set pptSlide = pptPres.Slides.Add(1, ppLayoutBlank)
On Error Resume Next
With pptPres.PageSetup
.SlideSize = 7
.SlideWidth = 1150
.SlideHeight = 590
End With
Set pptShapeRange = pptSlide.Shapes.PasteSpecial(ppPasteEnhancedMetafile, Link:=msoFalse)
pptSlide.Export Path$ & File$, "PNG"
pptApp.Quit
Set pptPres = Nothing
Set pptApp = Nothing
Set pptSlide = Nothing
Application.ScreenUpdating = True
MsgBox "All done! Check the folder containing this template for a file called '" & File$ & "'."
End Sub
原来解决方案就在那里,只是很难找到。虽然控件不在功能区上,但它仍然存在于 CommandBars 中。我设法通过转储所有 CommandBar 控件的列表(找到它并获取 id)来公开它。所以,解决方案是:
''' Note: Picture must be selected first
CommandBars.FindControl(ID:=5736).Execute
有谁知道是否可以 运行 来自 VBA 的 Word“另存为图片”对话框?
笔记:
我搜索了高低都无济于事,这表明它可能是不可能的。
不过,我认为至少值得一问。
澄清(按要求):这个问题就是问的。
在询问时,我无法在任何地方找到答案。在进行此编辑时,这是我所知道的唯一可以回答这个问题的地方(即基本问题可以这样做吗?如果可以的话如何做?)。
事实证明,是的,这是可以做到的(见下文了解如何做)。而且,虽然可能有其他方法可以通过唤起架构上不同的方法(我在提问时已经看到)来做类似的事情,但他们没有按要求回答问题。
现在,我看不出有什么不清楚的地方或为什么需要它或更多详细信息。
所以现在我问:在 SO 上提出这样的问题是否存在根本性错误?
您可以使用 PowerPoint 导出图形。这是最近导出世界地图的项目中的一个宏。 Word 图形是 EMF 文件:
Public Sub ExportMap()
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim pptShapeRange As PowerPoint.ShapeRange
Dim Path$, File$
Dim oRange As Range
Application.ScreenUpdating = False
myDate$ = Format(Date, "m-d-yyyy")
Set pptApp = CreateObject("PowerPoint.Application")
Path$ = ActiveDocument.Path & Application.PathSeparator
File$ = "WorldMap " & myDate$ & ".png"
Set pptPres = pptApp.Presentations.Add(msoFalse)
Set oRange = ActiveDocument.Bookmarks("WholeMap").Range
oRange.CopyAsPicture
Set pptSlide = pptPres.Slides.Add(1, ppLayoutBlank)
On Error Resume Next
With pptPres.PageSetup
.SlideSize = 7
.SlideWidth = 1150
.SlideHeight = 590
End With
Set pptShapeRange = pptSlide.Shapes.PasteSpecial(ppPasteEnhancedMetafile, Link:=msoFalse)
pptSlide.Export Path$ & File$, "PNG"
pptApp.Quit
Set pptPres = Nothing
Set pptApp = Nothing
Set pptSlide = Nothing
Application.ScreenUpdating = True
MsgBox "All done! Check the folder containing this template for a file called '" & File$ & "'."
End Sub
原来解决方案就在那里,只是很难找到。虽然控件不在功能区上,但它仍然存在于 CommandBars 中。我设法通过转储所有 CommandBar 控件的列表(找到它并获取 id)来公开它。所以,解决方案是:
''' Note: Picture must be selected first
CommandBars.FindControl(ID:=5736).Execute