VBA宏:将Visio形状报告导出到新的Excel文件,然后创建数据透视表

时间:2012-07-30 21:33:09

标签: excel vba excel-vba visio visio-vba

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

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

我的问题是:如何运行一个改变Visio模块的Excel文件的宏?

我知道如何在Visio的Excel文件中调用宏(Excel.run" ModuleNAME"),但这需要宏已经在Excel中。由于我在获取形状报告时创建了新的Excel文件,因此这些文件中没有任何宏。

另一种解决方案是,如果我能够将Visio中的形状数据报告作为新工作表导出到已包含宏的EXISTING Excel文件中,但我不知道如何执行此操作... (将形状报告从Visio导出到现有Excel文件)

生成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

1 个答案:

答案 0 :(得分: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

希望有所帮助。