社内の共有フォルダに置いてあるファイルを開いたり、逆に自身のPCから共有フォルダにファイルをコピーしたりすることは日常的に発生するかと思います。
手作業で実行する場合は何も問題は無いかと思いますが、これはActiveDirectoryなどで予め認証が済んでいたり、過去にその共有フォルダにユーザー名、パスワードを使って認証をした記録が残っていて、その情報を読み込んで接続してたりします。
そういった共有フォルダへのアクセスをバッチ処理などのプログラムで実行させようとする場合は、普段バックグランドで済んでしまっている「認証」処理や「接続・切断」とった処理を明示的に実装してあげる必要があります。
具体的にどのようにするかというと、WindowsのDOSコマンドの「NET USE」を使います。
今回は、VBScriptからDOSコマンドを実行する一連の処理をサンプルプログラムとして公開します。
業務を自動化するにあたって、自端末や自サーバ内で処理が完結することばかりでは無い為、是非活用してください。
Call Main()
Sub Main()
Dim objShell
Dim dstTargetHost,dstUserName,dstPassword
dstTargetHost = "¥¥共有フォルダのIPアドレスかホスト名¥"
dstUserName = "共有フォルダのユーザー名"
dstPassword = "共有フォルダのパスワード"
'共有フォルダへNET USEで接続します。
Set objShell = CreateObject("WScript.Shell")
objShell.Run "net use " & dstTargetHost & " " & dstPassword & " /user:" & dstUserName,0,true
'共有フォルダに接続して実行したい処理を記述してください。
'共有フォルダにファイルをコピーしたり、テキストファイルに書き込んだりなど・・・
'共有フォルダへのNET USEの接続を切断します
objShell.Run "net use " & dstTargetHost & " /DELETE",0,true
'生成したオブジェクトを破棄します。
Set objShell = Nothing
End Sub今回はNET USEを実行させましたが、DOSコマンド部分を書き換えれば他の処理も実行できます。
あと、WScript.ShellのRunメソッドの引数の0は呼び出したコマンドプロンプトの画面を制御する為の設定で、詳しくは以下のサイト様の記事を参考にしてください。
WSH/外部コマンドを実行する方法・Runメソッド - Windowsと暮らす
後、次の引数のTrueは、実行したDOSコマンドの実行終了を待って次の処理に移る挙動になります。待つ必要が無ければFalseですね。
今回の記事も参考になれば幸いです。今回もありがとうございました。
※以下の記事も併せて参考にしてください。↓

【VBScript】CDOを使用したメール送信処理
バッチの実行結果やエラー発生時など、メールで通知が出せると便利ですね。
そんな訳で、ソフトのインストールも不要でメ...

