所以基本上,我有一个包含大量形状和数据的 Visio 文件。我正在尝试将形状报告创建到新的 excel 文件中,然后让 excel 文件以编程方式将导出的数据转换为数据透视表。
我在 Visio 中运行了一个宏,它已经生成了带有普通表格形式数据的 excel 文件。我希望能够在 Visio 中运行激活导出数据的 excel 窗口并运行宏以使其成为数据透视表的宏。但是,我放入 visio 宏模块的任何 excel 宏代码都无法识别(例如“范围”),可能是因为它们不是 Visio 识别的单词。
我的问题是:如何运行从 Visio 模块更改 Excel 文件的宏?
我知道如何从 Visio (Excel.run "ModuleNAME") 调用 Excel 文件中的宏,但这需要宏已经在 Excel 中。由于我在获得形状报告时正在创建新的 Excel 文件,因此这些文件中没有任何宏。
另一种解决方案是,如果我能够将 Visio 中的形状数据报告作为新工作表导出到已包含宏的现有 Excel 文件中,但我也不确定如何执行此操作......(从现有 Excel 文件的 Visio)
我的生成 Excel 报告的代码:
Sub Excel2()
Visio.Application.Addons("VisRpt").Run
("/rptDefName=ReportDefinition_2.vrd/rptOutput=EXCEL")
End Sub
我想在运行 Excel2() 后运行这个宏
Sub NewMacro()
AppActivate "Microsoft Excel"
Dim AppExcel As Excel.Application
Set AppExcel = CreateObject("Excel.Application")
'Do all sorts of fancy stuff with making pivot tables
'Do all sorts of fancy stuff with making pivot tables
End Sub
最佳答案
您可以只使用 Get/CreateObject 函数来使用 Visio 中的 Excel 应用程序实例。
看看这篇文章:
http://msdn.microsoft.com/en-us/library/gg251785.aspx
您可能还会发现这很有用:
http://support.microsoft.com/kb/309603
...它描述了相反的方向(即从另一个应用程序控制 Visio),但在您的情况下,您会执行以下操作:
Dim AppExcel As Excel.Application
On Error Resume Next
Set AppExcel = GetObject(, "excel.application")
If AppExcel Is Nothing Then
Set AppExcel = CreateObject("excel.application")
End If
希望有帮助。
关于excel - VBA 宏 : Exporting Visio Shape Report into New Excel File, 然后创建数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57281836/