Excel VBA質問箱 IV

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

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


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

【45331】pdfファイルを印刷するには? テンちゃん 06/12/19(火) 18:28 質問[未読]
【45332】Re:pdfファイルを印刷するには? ichinose 06/12/19(火) 21:24 発言[未読]
【45333】Re:pdfファイルを印刷するには? 追伸 ichinose 06/12/19(火) 21:35 発言[未読]
【45341】Re:pdfファイルを印刷するには? 追伸 テンちゃん 06/12/20(水) 8:19 発言[未読]
【45509】Re:pdfファイルを印刷するには? 追伸 太一郎 06/12/28(木) 10:46 質問[未読]
【45510】Re:pdfファイルを印刷するには? 追伸 Blue 06/12/28(木) 11:16 発言[未読]
【45512】Re:pdfファイルを印刷するには? 追伸 太一郎 06/12/28(木) 11:44 お礼[未読]
【45339】Re:pdfファイルを印刷するには? テンちゃん 06/12/20(水) 8:09 発言[未読]
【45352】Re:pdfファイルを印刷するには? ichinose 06/12/20(水) 12:27 発言[未読]

【45331】pdfファイルを印刷するには?
質問  テンちゃん  - 06/12/19(火) 18:28 -

引用なし
パスワード
   教えてください。。。

所定の場所にあるPDFファイルを、ファイル名を指定して、
自動で印刷したいのですが可能でしょうか?
また、どのように書いたらいいのでしょうか?

自力で調べられるだけ調べたのですが、
ShellExecuteで"Acrobat.exe"のフルパス?と"print"指定をすれば可能・・・
といったところまでわかったのですが、VBA(プログラミング自体)を勉強中ですので、
構文?の書き方がわかりませんでした。。。

どなたか教えていただけないでしょうか?
よろしくお願いします。

【45332】Re:pdfファイルを印刷するには?
発言  ichinose  - 06/12/19(火) 21:24 -

引用なし
パスワード
   ▼テンちゃん さん:
こんばんは。

>所定の場所にあるPDFファイルを、ファイル名を指定して、
>自動で印刷したいのですが可能でしょうか?
>また、どのように書いたらいいのでしょうか?
>
>自力で調べられるだけ調べたのですが、
>ShellExecuteで"Acrobat.exe"のフルパス?と"print"指定をすれば可能・・・
>といったところまでわかったのですが、VBA(プログラミング自体)を勉強中ですので、
>構文?の書き方がわかりませんでした。。。

そこまでお分かりだとGoogleで検索すれば沢山引っかかってきますけどねえ!!

標準モジュールに
'========================================================
Public Declare Function ShellExecute Lib "SHELL32" _
        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 main()
  Call prfile("D:\ichinose\test.PDF")
'          ↑ここに印刷したいPdfのフルパス
End Sub
'========================================================
Function prfile(ByVal flpath As String) As Long
   prfile = ShellExecute(0, "Print", flpath, _
            vbNullString, vbNullString, 0)
End Function

【45333】Re:pdfファイルを印刷するには? 追伸
発言  ichinose  - 06/12/19(火) 21:35 -

引用なし
パスワード
   Win2000以上なら、

Sub main()
  Call prfile2("D:\ichinose\test.PDF")
End Sub
sub prfile2(ByVal flpath As Variant)
  Dim shell As Object
  Set shell = CreateObject("shell.application")
  shell.ShellExecute flpath, , , "Print", 0
  Set shell = Nothing
End sub

こっちの方が簡単かも・・・。

【45339】Re:pdfファイルを印刷するには?
発言  テンちゃん  - 06/12/20(水) 8:09 -

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

ありがとうございます。
早速、教えていただいたとおり実行してみました。

>標準モジュールに
>'========================================================
>Public Declare Function ShellExecute Lib "SHELL32" _
>        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 main()
>  Call prfile("D:\ichinose\test.PDF")
>'          ↑ここに印刷したいPdfのフルパス
>End Sub
>'========================================================
>Function prfile(ByVal flpath As String) As Long
>   prfile = ShellExecute(0, "Print", flpath, _
>            vbNullString, vbNullString, 0)
>End Function

しかし、うまくいきませんでした。
エラーになるわけでもなく完了しますが、プリントもされません。。。

ちなみに、

prfile = ShellExecute(0, "open", flpath, _
            vbNullString, vbNullString, SW_SHOW)

としてみたところ、
1回の実行で、プロセスに"Acrobat.exe"が入り、アプリとしては起動せず、
すぐに2回目の実行をすると、アプリとして起動し、ウィンドウ表示される。
しかし、ソフトが起動するだけで、ファイルが開いていない。
(2回実行しないと起動しないのも不思議ですが・・・)

ということは、ファイルのパスが合っていない?

Call prfile("C:\Documents and Settings\テンちゃん\デスクトップ\test.pdf")

として、実行しています。ちなみに、

Kill pathname:="C:\Documents and Settings\テンちゃん\デスクトップ\test.pdf"

を実行すると、削除されるので、パスの指定はあっているものと考えられる?
何が悪いのでしょうか???

OS:winXP
soft:Acrobat 7.0
printer:ネットワーク越し

プリンタがネットワーク越しだからいけないのかな???

再度、教えていただけませんでしょうか。
お願いします。

【45341】Re:pdfファイルを印刷するには? 追伸
発言  テンちゃん  - 06/12/20(水) 8:19 -

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

>Sub main()
>  Call prfile2("D:\ichinose\test.PDF")
>End Sub
>sub prfile2(ByVal flpath As Variant)
>  Dim shell As Object
>  Set shell = CreateObject("shell.application")
>  shell.ShellExecute flpath, , , "Print", 0
>  Set shell = Nothing
>End sub

こちらも実行してみました。

すると、
「指定されたファイルに対してこの操作を行うプログラムが関連付けられていません。」
とエラーになってしまいました。

フォルダオプションのファイルの種類タブで確認しましたが、PDFはAcrobatに関連付いています。
(PDFファイルを開けば、Acrobatが起動するということは、自ずと関連付いている?)

OS:winXP
soft:Acrobat 7.0
printer:ネットワーク越し

やはり、ネットワーク越しのプリンタがいけないのでしょうか?

【45352】Re:pdfファイルを印刷するには?
発言  ichinose  - 06/12/20(水) 12:27 -

引用なし
パスワード
   ▼テンちゃん さん:
こんにちは。
私は、Excel2002、Win2000 Reader4.0 ローカルプリンタ
で確認しましたが、API、WSH共に正常に印刷されたことを確認しています。


で、投稿したコード prfile、prfile2は、何もPDFファイルの印刷専用では
ありません。

Wordのドキュメントファイルを適当に作成して

Call prfile("C:\Documents and Settings\ichinose\My Documents\印刷見本.doc")
 
又は、

Call prfile2("C:\Documents and Settings\ichinose\My Documents\印刷見本.doc")


等のコードで試してみてください。
これが正常に作動するようなら、

Reader4.0とReader7.0の違いが原因している可能性が強そうです。

残念ながら、私のPCには諸事情により7.0をインストールできません。

ぴったりのものは見つかりませんでしたが、

hxxt://global.solutions.brother.co.jp/Library/ja_jp/faq/faq000739_000/index.html

いくつか不具合があるようですが、関係ないですか?

【45509】Re:pdfファイルを印刷するには? 追伸
質問  太一郎  - 06/12/28(木) 10:46 -

引用なし
パスワード
   ▼ichinose さん:
>Win2000以上なら、
>
>Sub main()
>  Call prfile2("D:\ichinose\test.PDF")
>End Sub
>sub prfile2(ByVal flpath As Variant)
>  Dim shell As Object
>  Set shell = CreateObject("shell.application")
>  shell.ShellExecute flpath, , , "Print", 0
>  Set shell = Nothing
>End sub
>
上記の構文参考にさせていただきました。

印刷した後にリーダーを閉じる処理を作成したいのですが、
なにかサンプルをお願いできないでしょうか?
色々 調べたのですがわかりませんでした。
宜しくお願い致します

【45510】Re:pdfファイルを印刷するには? 追伸
発言  Blue  - 06/12/28(木) 11:16 -

引用なし
パスワード
   htt p://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200604/06040176.txt
の後半部分、起動オプションで何とかならないかなぁ。

【45512】Re:pdfファイルを印刷するには? 追伸
お礼  太一郎  - 06/12/28(木) 11:44 -

引用なし
パスワード
   ▼Blue さん:
>htt p://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200604/06040176.txt
>の後半部分、起動オプションで何とかならないかなぁ。

ありがとうございます。参考にさせていただきます。
しかし・・・内容を理解するのに時間がかかりそうです(汗

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