プロが教えるわが家の防犯対策術!

VBAでvisioなどのファイルを指定して
印刷する事などは出来るのでしょうか?

A 回答 (3件)

>難しくて意味がサッパリわかりません(^^;


>ダイアログが出るのはキツイですね、
>出来れば回避したいですねぇ。

あとは印刷ダイアログのOKボタンを探して、PUSHさせるだけなのですが、、、
「API:ShellExecute()」
のサンプルでわからないとなると、おそらくこの方向で発展させても、理解に苦しむと想像します。
なので、、、とりあえず、マルチ対応は諦める事をお勧めします。


そこで「VISIO限定」になりますが、
VISIOアプリケーションを、外部操作する事で印刷をさせた方が、一番容易かと思います。


エクセルからでも、アクセスでも、VBS(要:宣言修正)からでも、処理が可能です。


Const DEF_Visio_VisUICmds_visCmdPrintPage As Integer = &H5A3

Sub PrintVisio(p_strFilePath As String)
  Dim vsdApp As Object  'Visio.Application
  Dim vsdDoc As Object  'Visio.Document
  
  Set vsdApp = CreateObject("Visio.Application")
  Set vsdDoc = vsdApp.Documents.Open(p_strFilePath)
  vsdApp.DoCmd DEF_Visio_VisUICmds_visCmdPrintPage
  
  vsdDoc.Close
  Set vsdDoc = Nothing
  
  vsdApp.Quit
  Set vsdApp = Nothing
End Sub
    • good
    • 0
この回答へのお礼

御礼が遅くなりました。
この方法でうまくいきました!
ありがとうございましたぁーm(_ _)m

お礼日時:2006/04/12 07:28

>今の所visioで


ってことはマルチに処理を行いたいってことですね?

VISIO限定であれば、コマゴマとSendKeysを利用することで可能だと思いますが、全対応ともなれば、OSに処理を任す方法をお勧めします。

・ファイルを右クリック
・ショートカットメニューが出現
・「印刷(P)」を選択
というのが、印刷のショートカットとなると思います。



Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub PrintFile(ByVal p_FileName As String)
  '関連づいたアプリケーションのSHELLメニューの印刷を実行する
  Dim lngInstance As Long
  lngInstance = ShellExecute(0, "print", p_FileName, vbNullString, Environ("windir"), 1)
  If lngInstance < 33 Then
    '印刷(P)というショートカットが用意されていないファイル種別の場合など
    Call MsgBox("失敗", vbExclamation)
  End If
End Sub


ただしVISIOの場合は、その後印刷のダイアログが出現すると思いますが、それはソフトの仕様です。
どうしてもそれを回避したいのであれば、既存のソフトの仕様範囲外となるため、やはりファイル毎の個別処理を組み込まなければなりません。

この回答への補足

難しくて意味がサッパリわかりません(^^;
勉強不足を痛感します(^^;

>ただしVISIOの場合は、その後印刷のダイアログが出現すると思いますが
ダイアログが出るのはキツイですね、
かなりのファイル(visio)を指定させたいので…。
出来れば回避したいですねぇ。

補足日時:2006/04/11 16:49
    • good
    • 0

>visioなどのファイルを指定して


VISIO限定って事ではなく、全てのファイル種類に対してですか?

この回答への補足

今の所visioで試してみたい感じです。

補足日時:2006/04/10 10:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A