【VBScript(WSH)】このスクリプトには、悪質なコンテンツが含まれている為、ウィルス対策ソフトウェアによりブロックされています。
目次
【VBScript(WSH)】このスクリプトには、悪質なコンテンツが含まれている為、ウィルス対策ソフトウェアによりブロックされています。
組んでいた自動化システムでこんなメッセージが出てきてしまいました。
多分scriptでループ閉じ忘れとかあってこんなのが出てるんだろうと思い見直すも原因不明。
最終的に判明した理由が「えっ?」という内容だったので備忘録に記しとこうと思います。
判明した原因はタイプミス
▼エラーの出たスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ '共通処理 ※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 に変えただけです。
これだけで、エラーは発生せずに動きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ '共通処理 ※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が主戦場な人はすぐ気づくのだろうか。
この原因は意表を突かれ過ぎてチョット納得いってないというね。
なんだかなぁ。
-
前の記事
【ECの会計処理】モールポイントの処理とタイミングは?『値引きor広告費』『付与時or利用時』 2020.10.28
-
次の記事
【VBScript(WSH)】エラーの回避方法『オブジェクトがありません』 2020.10.31
コメントを残す