KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

VB/VBAトップへ ▼カッ飛び最後   全レスを表示

  VisioからExcelのマクロを使う方法

01: 名前:pul投稿日:2003/12/26(金) 13:45
初めまして.pulといいます.
つい一月ほど前に初めてVISIOの存在を知った,超初心者です.

Visio側からExcelのマクロ(あるいはアドインにするかもしれませんが)を
呼ぶ方法と作成方法をご存知のかたがいらしたら,教えていただけないでしょうか.

具体的に申し上げますと,
Visio図面上にコネクタでつながったような複数オブジェクトが
存在しています.各オブジェクトに対してExcelブック中の1シートが対応し,
オブジェクトの持つ情報をシートに反映させたいのです.
Visioが行なう図面上の機能と,Excel側でシートに行なう機能を分離して,
それぞれに持たせたいです.

よろしくお願いいたします.

02: 名前:yoda投稿日:2003/12/26(金) 21:04
office developer を使うと、vbaで、
複数のoffice アプリに、またがる、
com addin が、作れます。
詳しくは、msdn を、参照してください。

03: 名前:pul投稿日:2004/01/05(月) 13:54
即ご回答いただいたのに,お返事が遅くなりましてすみません.
今年もよろしくお願いいたします.

msdnの,参考になりそうなページにたどり着きました.
まずは実験をして確かめてみます.
ありがとうございました.

04: 名前:pul投稿日:2004/01/05(月) 22:08
たびたびすみません.pulです.
参考になりそうなページにはたどり着きましたが,うまくいきません.

Visioから,Excelブック内に書かれたプロシージャを
直接呼ぶ方法はないのでしょうか.

また,Visioから.xla内のプロシージャを呼ぶことはできますか?
それとも,Visioから呼びたい場合は.dllにしなければならないのでしょうか.

よろしくお願いします.

05: 名前:名無しさん投稿日:2004/01/06(火) 08:30
ごめんなさい!
こんなふうにしたら、どうでしょう。
Dim xlApp As Object
Set xlApp = CreateObject("excel.application")
xlApp.Visible = True
xlApp.Workbooks.Open "c:\My Documents\ThisIsExcel.xls"
xlApp.Run ("ThisIsExcel.xls! test")

06: 名前:pul投稿日:2004/01/06(火) 16:49
できました!!ありがとうございました!!!

WorkBooks.Openでファイルを開く時には,絶対パスを書かないとファイルを見つけてくれなくて
xlApp.Runで実際にプロシージャを呼ぶ時には,絶対パスだとわかってもらえないのですが,
これは普通の仕様ですか?
それとも,私の個人設定もしくはファイルの場所が悪いのでしょうか.

何度もすみません.よろしくお願いします.

07: 名前:名無しさん投稿日:2004/01/06(火) 18:41
理屈は、分かりませんが、
xlApp.Run ("ThisIsExcel.xls! test")
のところは、xlApp.Run ("test")
でもよいので、
Openのときに、絶対パスを、
渡すことだけを、考慮すれば、
よいのでは?

08: 名前:なか投稿日:2004/01/07(水) 09:44
>これは普通の仕様ですか?
普通です。
>WorkBooks.Openでファイルを開く時には,絶対パスを書かないとファイルを見つけてくれなくて
カレントフォルダにファイルがあれば、ファイル名だけども開けると思いますが、
普通は絶対パスを指定します。
>xlApp.Runで実際にプロシージャを呼ぶ時には,絶対パスだとわかってもらえないのですが
これはRunメソッドの使い方勘違いしてます。
Runメソッドで使用するマクロ名は、メニューの[ツール]-[マクロ]-[マクロ]で表示される
マクロフォームのリスト中に列挙されているマクロ名を指定します。
だから、ここで絶対パスで指定するとそんなマクロはないと言うことになります。

09: 名前:pul投稿日:2004/01/07(水) 10:08
Runメソッドの使い方だけでなくて,どういうものなのかも理解しないうちに
使っていたんですね.
謎も解決しましたし,自分の環境が特殊ではないということが分かったので,
素直に書いていこうと思います.

アドバイスしてくださったみなさま,ありがとうございました.

10: 名前:うめ投稿日:2006/03/03(金) 17:44
絶対パスについて記述されていたので
質問させてください。

カレントフォルダにファイルがあれば、ファイル名だけでも開けるというのは、
本当ですか?
試してみましたがならないようです。

作成したVISIOファイルを色んなヒトのパソコンで
動作させたいので
絶対パスはあまり使用したくないのですが。

どなたかご教示いただければ幸いです。

11: 名前:yoda投稿日:2006/03/03(金) 20:24
カレントフォルダにファイルって「、どこですか?

12: 名前:yoda投稿日:2006/03/03(金) 20:25
すみません、読みにくくなってしまいましたね。

「カレントフォルダって、どこですか?」 に訂正します。

13: 名前:投稿日:2006/03/04(土) 09:46
うめ様、yoda様

カレントフォルダ、、、VBAを実行させているファイルの存在するフォルダ
という意味だと思ったのですが違っていたらすいません。

もしそうだったら、ファイル名だけで動かない(開かない)ようであれば
CurDirで現在のパスが取得できるので結合して実行してみては
いかがでしょうか?

14: 名前:yoda投稿日:2006/03/04(土) 15:33
メニュー オプションの「ファイルパスの設定」で図面のフォルダーが登録できるので、Application.DrawingPaths で、読み取って、フルパスを作る、という方法もあるかも知れません。

15: 名前:yoda投稿日:2006/03/05(日) 08:01
CurDir は、良い方法ですねー。

16: 名前:うめ投稿日:2006/03/06(月) 14:31
出勤してきました。
初めて書き込みしてみたので
返信が入っていてカンドーしました。
yoda様、苺様、ありがとうございます。
早速使いこんでみました。
CurDir便利です、とても。
ほんとうにありがとうございました。

17: 名前:せいめい投稿日:2007/04/19(木) 10:00
yoda様:
DoCmdメソッドで印刷ダイアログが表示できますが、
ほかの位置をクリックすると、このダイアログが消えました。
どうすればこのダイヤログが維持しますか。
ほんとのDialogフォーム形式はどう実現しますか。

以下の語句はその機能を実現できません。
MyApp = AxDrawingControl1.Window.Application
MyApp.DoCmd(Microsoft.Office.Interop.Visio.VisUICmds.visCmdFilePrint)

18: 名前:yoda投稿日:2007/04/19(木) 10:34
「他の位置」というのは、どこですか?
他のウインドウの下に隠れたのではないでしょうか?

「ほんとのDialogフォーム形式」の意味がわかりません。
どういう意味でしょうか?

「以下の語句はその機能を実現できません。」の「その機能」とは
何の機能でしょうか、なにをしたいのでしょうか?

19: 名前:せいめい投稿日:2007/04/19(木) 10:56
yoda様:

印刷ダイアログフォームが閉じる時だけ、他の操作を行うことができます。
「その機能」と言うのは、ダイアログが表示できますし、他の位置をクリックすると、このダイヤログは消えません。

20: 名前:yoda投稿日:2007/04/19(木) 11:54
申し訳ありませんが、意味がわかりません。

21: 名前:yoda投稿日:2007/04/19(木) 12:23
http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.visio.developer&lang=en&cr=US [source] [check]
で、質問することをお勧めします。

22: 名前:せいめい投稿日:2007/04/19(木) 13:15
ご迷惑かけて申し訳ございません。

18: 名前:yoda投稿日:2007/04/19(木) 10:34
「他の位置」というのは、どこですか?
→「他の位置」は「印刷画面」以外のところです。

他のウインドウの下に隠れたのではないでしょうか?
→そうですね。確か他のウインドウの下に隠れました。
ただし、お客様の要求に合っていないので、ShowDialogの形が欲しいです。

23: 名前:yoda投稿日:2007/04/19(木) 13:51
printのプログラムはかなり複雑ですので、
Visio SDKのサンプルプログラムをご参考
にすることを、お勧めします。
VisioSDKに、code librarian があり、
print を keyword として検索すると、
出てきます。


VB/VBAトップへ ▲カッ飛び先頭   全レスを表示