Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4824 / 13644 ツリー ←次へ | 前へ→

【54192】EXCELからVISIOを印刷するには アース 08/2/28(木) 23:11 質問[未読]
【54216】Re:EXCELからVISIOを印刷するには りん 08/2/29(金) 20:44 発言[未読]
【54228】Re:EXCELからVISIOを印刷するには アース 08/3/1(土) 7:29 お礼[未読]

【54192】EXCELからVISIOを印刷するには
質問  アース  - 08/2/28(木) 23:11 -

引用なし
パスワード
   EXCELのマクロでVISIOドキュメントを開いて印刷実行したいのですが、VISIO2007では全頁印刷されましたが、VISIO2003では1頁しか印刷されませんでした。どのように修正すれば良いでしょうか?

Dim oHnd As Object
visPrintAll=0
Set oHnd = CreateObject("Visio.application") 'Visio起動
oHnd.Visible = True 'Visio表示
i = 4
While (Cells(i, 2).Value <> "") 
visio_doc = Cells(i, 2).Value  'Visioファイル名
Set visDoc = oHnd.documents.Open(visio_doc)
oHnd.ActiveDocument.PrintOut PrintRange:=visPrintAll
visDoc.Close

i = i + 1
Wend

【54216】Re:EXCELからVISIOを印刷するには
発言  りん E-MAIL  - 08/2/29(金) 20:44 -

引用なし
パスワード
   アース さん、こんばんわ。
>EXCELのマクロでVISIOドキュメントを開いて印刷実行したいのですが、VISIO2007では全頁印刷されましたが、VISIO2003では1頁しか印刷されませんでした。どのように修正すれば良いでしょうか?

うちにはVisio2007しかないので完全に試せてはいないのですが、MSDNでヘルプを見る限り、これで前景ページが全部出ないとおかしいですよね。
MSDN Visio2003 PrintOut
htt p://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/Jpvssdk11/html/vimthPrintOut.asp

>Dim oHnd As Object
>visPrintAll=0
>Set oHnd = CreateObject("Visio.application") 'Visio起動
>oHnd.Visible = True 'Visio表示
>i = 4
>While (Cells(i, 2).Value <> "") 
>visio_doc = Cells(i, 2).Value  'Visioファイル名
>Set visDoc = oHnd.documents.Open(visio_doc)
visDoc.PrintOut PrintRange:=0 'visPrintAllはVisioO固有の列挙なので(=0ですけどね)
>visDoc.Close
>
>i = i + 1
>Wend

どうですかね。

【54228】Re:EXCELからVISIOを印刷するには
お礼  アース  - 08/3/1(土) 7:29 -

引用なし
パスワード
   ▼りん さん:

回答ありがとうございます。

> visDoc.PrintOut PrintRange:=0 'visPrintAllはVisioO固有の列挙なので(=0ですけどね)

会社にしかVISOが無いので試せないんですが、上記のように指定しても
うまくいかなったような気がします。
又、前景頁を順次アクティブにしてカレントページ印刷指定にすると
最初の頁がページ数分印刷されてしまいました。
つまり、PageRangeの指定が無効になっているような動きをします。
他の方から以下のようにすると良いとのアドバイスをいただきましたので
それで試してみたいと思います。
oHnd.ActiveDocument.PrintOut PrintRange:=visPrintAll

Dim dummy
dummy = visdoc.Print
に変更する。

4824 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free