【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が主戦場な人はすぐ気づくのだろうか。

この原因は意表を突かれ過ぎてチョット納得いってないというね。

なんだかなぁ。

\ 最新情報をチェック /

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。