【VBScript(WSH)】このスクリプトには、悪質なコンテンツが含まれている為、ウィルス対策ソフトウェアによりブロックされています。
【VBScript(WSH)】このスクリプトには、悪質なコンテンツが含まれている為、ウィルス対策ソフトウェアによりブロックされています。

組んでいた自動化システムでこんなメッセージが出てきてしまいました。
多分scriptでループ閉じ忘れとかあってこんなのが出てるんだろうと思い見直すも原因不明。
最終的に判明した理由が「えっ?」という内容だったので備忘録に記しとこうと思います。
判明した原因はタイプミス
▼エラーの出たスクリプト
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'共通処理 ※Amazon限定仕様
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Option Explicit
'-----------------------------------------------------
'名前を付けて保存 Edge/Chrome用
'-----------------------------------------------------
Function saveAsAmaChrome(filName,dirName)
Dim i
Dim onjShell
Dim textClip : Set textClip = CreateObject("WScript.Shell")
'2バイト文字入れ用 ※コマンドに書いてコピー
textClip.Run "cmd.exe /c Echo "&dirName&" | Clip", 0, True
'保存操作
Set onjShell = WScript.CreateObject ("WScript.Shell")
If Err.Number <> 0 Then
createErrorLog fileDirectory
Else
WScript.Sleep 2000
onjShell .SendKeys(filName)
WScript.Sleep 1000
'Tab反応ズレ防止策
onjShell .SendKeys( "^f" )
WScript.Sleep 500
onjShell .SendKeys( "+{TAB}" )
WScript.Sleep 500
'保存作業
onjShell .SendKeys( "{ENTER}" )
WScript.Sleep 5000
textClip.SendKeys( "^v" )
WScript.Sleep 500
onjShell .SendKeys( "{ENTER}" )
WScript.Sleep 500
onjShell .SendKeys( "%s" )
WScript.Sleep 5000
End If
Set i = Nothing
Set onjShell = Nothing
Set textClip = Nothing
End Function
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'共通処理
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'-----------------------------------------------------
'外部 Function 読込準備 ↓呼び出し方
'-----------------------------------------------------
Function Include(strFile)
'strFile:読み込むvbsファイルパス
Dim objFso, objWsh, strPath
Set objFso = Wscript.CreateObject("Scripting.FileSystemObject")
'外部ファイルの読み込み
Set objWsh = objFso.OpenTextFile(strFile)
ExecuteGlobal objWsh.ReadAll()
objWsh.Close
Set objWsh = Nothing
Set objFso = Nothing
End Function
objShell と書こうとしたら隣の 【n】を押してしまい onjShell になっています。
変数宣言してそれを使えば問題ないと判断して、(面倒臭がって)onjShellのままスクリプトを書いていきました。
最後にちゃんとNothingで初期化もして「これで問題ないはず」だったのですが、原因はこの【onjShell】でした。
objShellにするとエラーが出ず処理される
下の様に修正しました。変更箇所はタイプミスの onjShell を objShell に変えただけです。
これだけで、エラーは発生せずに動きます。
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'共通処理 ※Amazon限定仕様
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Option Explicit
'-----------------------------------------------------
'名前を付けて保存 Edge/Chrome用
'-----------------------------------------------------
Function saveAsAmaChrome(filName,dirName)
Dim i
Dim objShell
Dim textClip : Set textClip = CreateObject("WScript.Shell")
'2バイト文字入れ用 ※コマンドに書いてコピー
textClip.Run "cmd.exe /c Echo "&dirName&" | Clip", 0, True
'保存操作
Set onjShell = WScript.CreateObject ("WScript.Shell")
If Err.Number <> 0 Then
createErrorLog fileDirectory
Else
WScript.Sleep 2000
objShell .SendKeys(filName)
WScript.Sleep 1000
'Tab反応ズレ防止策
objShell .SendKeys( "^f" )
WScript.Sleep 500
objShell .SendKeys( "+{TAB}" )
WScript.Sleep 500
'保存作業
objShell .SendKeys( "{ENTER}" )
WScript.Sleep 5000
textClip.SendKeys( "^v" )
WScript.Sleep 500
objShell .SendKeys( "{ENTER}" )
WScript.Sleep 500
objShell .SendKeys( "%s" )
WScript.Sleep 5000
End If
Set i = Nothing
Set objShell = Nothing
Set textClip = Nothing
End Function
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'共通処理
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'-----------------------------------------------------
'外部 Function 読込準備 ↓呼び出し方
'-----------------------------------------------------
Function Include(strFile)
'strFile:読み込むvbsファイルパス
Dim objFso, objWsh, strPath
Set objFso = Wscript.CreateObject("Scripting.FileSystemObject")
'外部ファイルの読み込み
Set objWsh = objFso.OpenTextFile(strFile)
ExecuteGlobal objWsh.ReadAll()
objWsh.Close
Set objWsh = Nothing
Set objFso = Nothing
End Function
うーん...。変数宣言しててもダメなのかぁ。
予想してなかったのでとても面喰いました。
まとめ
VBScriptが主戦場な人はすぐ気づくのだろうか。
この原因は意表を突かれ過ぎてチョット納得いってないというね。
なんだかなぁ。


