ドラッグ&ドロップしたファイルを印刷する VBScript に画像印刷機能を追加した
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
前に書いた記事で、ドラッグ&ドロップしたファイルを印刷する VBScript を書きました。
ですが、そのプログラムでは画像ファイルを印刷する事が出来ませんでした。
そこで、画像ファイルも印刷出来る様に改良しました。
ただ、印刷の出来上がりは微妙です。
印刷位置の水平、鉛直などの設定をしていないため、左上に寄った画像が印刷されます。
関数
ソースコード
'-------------------------------------------------------------------------------------------------------
' 引数が無かった時の処理
If WScript.Arguments.count = 0 then
WScript.Echo "引数が無いため、実行できません。" & vbNewLine & _
"ファイルをドロップしてください。"
WScript.Quit
End If
'-------------------------------------------------------------------------------------------------------
' フォルダ内ファイルリスト出力
for each args In WScript.Arguments
'----------------------------------------------------------------------------------------------------
' ファイルシステムオブジェクト作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'----------------------------------------------------------------------------------------------------
' ドロップされた引数がフォルダかファイルかを判定する
If objFileSys.FolderExists(args) then
' is folder.
WScript.Echo "フォルダがドロップされました。" & vbNewLine & _
"処理を終了します。"
WScript.Quit
ElseIf objFileSys.FileExists(args) then
' is file.
else
' is unknown.
WScript.Echo "フォルダ 及び ファイル とも認識できないデータがドロップされました。" & vbNewLine & _
"処理を終了します。"
WScript.Quit
End If
'----------------------------------------------------------------------------------------------------
' ドロップされた引数がフォルダか画像かを判定する
Flag_Image = False
pos = InstrRev(args, ".")
argsExtension = Mid(args, pos)
Flag_Image = ImageDetermination(argsExtension)
' ドロップされたファイルが画像以外なら
If Flag_Image = False Then
'-------------------------------------------------------------------------------------------------
' シェルオブジェクト作成
Set objWsh = WScript.CreateObject("Shell.Application")
'-------------------------------------------------------------------------------------------------
' 引数ファイルのパスの分解
pos = InstrRev(args, "\")
Dir_Name = Left(args, pos - 1)
file_Name = Mid(args, pos + 1)
'-------------------------------------------------------------------------------------------------
' フォルダオブジェクト と ファイルオブジェクトの作成
Set objFolder = objWsh.NameSpace(Dir_Name)
Set objFile = objFolder.ParseName(file_Name)
'Msgbox objFolder.Title & vbnewline & objFile.Name
'-------------------------------------------------------------------------------------------------
' 印刷する
objFile.InvokeVerbEx("Print")
'-------------------------------------------------------------------------------------------------
' シェルオブジェクトの破棄
Set objWsh = Nothing
' ドロップされたファイルが画像なら
Else
'-------------------------------------------------------------------------------------------------
' 印刷する
Set objWsh = CreateObject("WScript.Shell")
objWsh.Run "mspaint.exe " & args & " /p"
Set objWsh = Nothing
End If
Next
Function ImageDetermination(argsExtension)
' 画像ファイルの拡張子を記憶
ImageExtension = Array(".jpg", ".jpeg", ".JPG", ".JPEG", ".jpe", ".jfif", ".pjpeg", ".pjp", _
".png", _
".gif", _
".svg", ".svgz", _
".bmp", ".dib")
' 画像判定ループ
For i = LBound(ImageExtension) To UBound(ImageExtension)
' 画像ファイルの拡張子と同一の拡張子であれば
If ImageExtension(i) = argsExtension Then
' 画像ファイルであると判断する
ImageDetermination = True
' 関数を終了する
Exit Function
' 画像ファイルの拡張子と不一致の拡張子であれば
Else
' 画像ファイル以外と判断する
ImageDetermination = False
End If
Next
End Function
使い方
上のソースコードをメモ帳にコピペして、拡張子を『.vbs』にして、すべてのファイルとして保存すれば、ドロップしたファイルを印刷するプログラムが出来ます。この VBScript は画像も一応印刷出来ます。
画像が新たに印刷出来る様になったので、下に整理しておきます。
印刷出来るファイル
テキストファイル(.txt)PDF ファイル(.pdf)
Microsoft Excel ファイル(.xls, .xlsx)
Microsoft PowerPoint ファイル(.ppt, .pptx)
Microsoft Word ファイル(.doc, .docx)
メールファイル(.msg)
バッチファイル(.bat)
VBScript ファイル(.vbs)
画像ファイル(.png, .jpg, .bmp)
印刷出来ないファイル
dat ファイル(.dat)CSV ファイル(.csv)
コメント
印刷の設定が出来る様に改良していきたい。
以上