• ベストアンサー

エクセルVBAでの画像印刷について。

エクセルVBAにて、JPG画像ファイルを印刷するにはどのように記述すればいいのでしょうか? JPG画像ファイルをフルパスで指定して印刷できればベストです。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#2です。徒然なるままにやってみました。 印刷設定の詳細は、参考URLなどをご覧下さい。 xl2000で試しています。ご参考まで。 Sub test() Dim myPic As Picture Dim sh As Worksheet Const filePath As String = "C:\Documents and Settings\hoge\My Documents\My Pictures\hogehoge.jpg" Application.ScreenUpdating = False Set sh = ActiveWorkbook.Sheets.Add Set myPic = sh.Pictures.Insert(filePath) With sh.PageSetup .PrintArea = myPic.TopLeftCell.Address & ":" & myPic.BottomRightCell.Address .PaperSize = xlPaperA4 .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With sh.PrintOut Copies:=1 Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

参考URL:
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv211.html
poohaltea
質問者

お礼

回答ありがとうございます。 詳細補足については#1の補足にて代えさせて頂きます。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

#2,3です。keithinさんのご指摘が気になったので、xl2010でも試してみましたが動作しました。 参考URLの記事をみつけましたが、今回はその場限りの使い捨てなので、問題ないと考えます。

参考URL:
http://support.microsoft.com/kb/2396509/ja
poohaltea
質問者

お礼

回答ありがとうございます。 詳細補足については#1の補足にて代えさせて頂きます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

たぶん、お望みのモノではないと存じますが、勉強のために作成してみたことがあります。 1.画像ファイルをBitmapに読みこみ。 2.Bitmapからデスクトップ互換のデバイスコンテキストを生成 3.上記デバイスコンテキストをemfに変換 4.プリンタのデバイスコンテキストを取得 5.画像のemfを、プリンタのデバイスコンテキストに描画=印刷 勉強のためなので、用紙一杯に印刷できるところで満足して、それ以上の追求はしてありません。 APIを使っており、こちらに回答するには長すぎますし、きっと採用されないと思いますので。 画像を挿入/図/ファイルからで、ワークシートに読みこんで、 一定セル範囲に収まる様にサイズを調整して、 そのセル範囲を印刷範囲に設定して印刷し、 用が済んだらそのワークシートを削除するというのが簡便だと思います。 自動記録でかなりの部分が出来ると思いますので、その上でご不明の点があれば補足質問されてはいかがですか。

poohaltea
質問者

お礼

回答ありがとうございます。 詳細補足については#1の補足にて代えさせて頂きます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

フム。。 標準モジュールに下記の通り作成して,macro1を実行します。 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 macro1() On Error GoTo errhandle ret = ShellExecute(0, "Print", "c:\test\sample.jpg", "", "", 0) errhandle: Err = 0 End Sub #なぜワザワザExcel VBAで「画像ファイルを」操作したいのか,そこいらのバックグランドについてもうちょっと補足があると,より適切なマクロのアイデアも寄せられると思います。 例えばワークシート上に目的の画像を挿入して印刷するといった,もっと簡単なマクロでも十分かもしれません。ただしあなたが実際にご利用のエクセルのバージョンによって正しいマクロの書きぶりが変わるので,マクロを代わりに書いてくださいなときは注意して下さい。

poohaltea
質問者

補足

回答ありがとうございます。 社員の資格書を印刷するマクロを作ろうとしているのですが、画像ファイルの印刷の仕方が分かりませんでしたので質問させて頂きました。 何分資格書がたくさんありますので、エクセル上で印刷したい資格書にチェックを入れ、チェックを入れた資格書と対応する画像ファイルを印刷するというマクロを作っています。