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

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

ドラッグ&ドロップしたファイルを印刷する 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)
 




コメント

印刷の設定が出来る様に改良していきたい。




以上