解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

ドラッグ&ドロップしたファイルを印刷する VBScript




こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。




この記事の目次




目的


ファイルをドロップすると通常使用するプリンタで印刷する VBScript プログラムを作成します。

印刷部数が足りなくて、急な印刷が必要だったり、ファイルを開かずに印刷出来るため、 PDF ファイルなど、あまり編集を必要としないファイルの効率的な印刷に便利です。




関数

ソースコード


'-------------------------------------------------------------------------------------------------------
' 引数が無かった時の処理
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
  
   '----------------------------------------------------------------------------------------------------
   ' シェルオブジェクト作成
   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
  
Next

使い方

上のソースコードをメモ帳にコピペして、拡張子を『.vbs』にして、すべてのファイルとして保存すれば、ドロップしたファイルを印刷するプログラムが出来ます。

色々なファイルをドロップしてみたところ、印刷出来ないファイルもありました。

下に整理しておきます。

印刷出来るファイル

テキストファイル(.txt)
PDF ファイル(.pdf)
Microsoft Excel ファイル(.xls, .xlsx)
Microsoft PowerPoint ファイル(.ppt, .pptx)
Microsoft Word ファイル(.doc, .docx)
メールファイル(.msg)
バッチファイル(.bat)
VBScript ファイル(.vbs)

印刷出来ないファイル

dat ファイル(.dat)
CSV ファイル(.csv)
画像ファイル(.png, .jpg)  




コメント

画像ファイルが印刷出来ると使用する機会が増えそうな気がするので、改良していきたい。




以上