0

所以基本上,我有一个包含大量形状和数据的 Visio 文件。我正在尝试将形状报告创建到新的 excel 文件中,然后让 excel 文件以编程方式将导出的数据转换为数据透视表。

我在 Visio 中运行了一个宏,它已经生成了带有普通表格形式数据的 excel 文件。我希望能够在 Visio 中运行激活导出数据的 excel 窗口并运行宏以使其成为数据透视表的宏。但是,我放入 visio 宏模块的任何 excel 宏代码都无法识别(例如“范围”),可能是因为它们不是 Visio 识别的单词。

我的问题是:如何运行从 Visio 模块更改 Excel 文件的宏?

我知道如何在 Visio 的 Excel 文件中调用宏(Excel.run“ModuleNAME”),但这需要宏已经在 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
4

1 回答 1

0

您可以只使用 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

希望有帮助。

于 2012-07-31T09:16:25.237 回答