0

つまり、基本的に、多くの形状とデータを含むVisioファイルがあります。形状レポートを新しいExcelファイルに作成してから、Excelファイルでエクスポートされたデータをプログラムでピボットテーブルに変換しようとしています。

すでに通常のテーブル形式のデータを含むExcelファイルを生成するマクロをVisioで実行しています。エクスポートされたデータのExcelウィンドウをアクティブにし、マクロを実行してピボットテーブルにするマクロをVisioで実行できるようにしたい。ただし、visioマクロモジュールに挿入したExcelマクロコードは認識されません(「範囲」など)。これは、Visioで認識される単語ではないためと考えられます。

私の質問はこれです:VisioモジュールからExcelファイルを変更するマクロを実行するにはどうすればよいですか?

VisioからExcelファイル(Excel.run "ModuleNAME")でマクロを呼び出す方法を知っていますが、マクロが既にExcelにある必要があります。図形レポートを取得するときに新しいExcelファイルを作成しているため、これらのファイルにはマクロが含まれていません。

別の解決策は、Visioから形状データレポートを新しいシートとして、マクロが既に含まれている既存の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
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 に答える