2020/05/22更新
20/5/20にお知らせした下記の事象ですが、マイクロソフトに誤検出の報告を行い、パターンファイル(セキュリティインテリジェンス)の更新が行われ、誤検出されないように改善されました。
■更新されたセキュリティインテリジェンスのバージョン
・セキュリティインテリジェンスのバージョン:1.315.1112.0
・作成されたバージョン:2020/05/21 12:33
[設定]-[更新とセキュリティ]-[Windowsセキュリティ]-[ウィルスと脅威の防止]-[ウィルスと脅威の更新]の「更新プログラムのチェッ
ク」から最新のバージョンに更新してください。
セキュリティインテリジェンスの更新が上手く行かない場合は以下をお試しください。
■コマンドプロンプトからの実行方法
1.コマンドプロンプトを[管理者として実行]で開き、cd c:\Program Files\Windows Defender を実行してディレクトリを変更します
2.“MpCmdRun.exe -removedefinitions -dynamicsignatures”を実行します
3.“MpCmdRun.exe -SignatureUpdate”を実行します
2020/05/20更新
WindowsのアンチウィルスDefenderの2020/5/20のセキュリティインテリジェンス(パターンファイル1.315.1016.0)の更新によって、Excelデザインファイルが起動したタイミングで以下のメッセージが表示され、マクロが削除される事象を確認しました。
この問題はWindows Defenderを使用している場合のみ起こります。他のアンチウィルスソフト(ESET)では正常ファイルです。
■VBAコードが消される可能があるファイル
- TxPrintDesign.xlsm(注文書、作業指示書、外注注文書)
- TxPrintDesign_Rece.xlsm(出荷指示書)
- TxPrintDesign_Pick.xlsm(払出指示書)
- TxPrintDesign_SAct.xlsm(実績データ伝票)
- TxPrintDesign_RAct.xlsm(出荷実績伝票)
- TxPrintDesign_Form.xlsm(Excel印刷)
- TxPrintDesign_Hais.xlsm(配送作業指示書)
- TxPrintDesign_Mitu.xlsm(見積依頼書、見積書)
- TxPrintDesign_Srvc.xlsm(サービスパーツ伝票)
このようなメッセージが表示され、Windows10に通知が表示されて以降は、TxPrintDesgin.xlsmファイル内のVBAコードが削除されます。
削除されるVBAコードは、TxPrintMacro.xlsm内のVBAを実行するためのもので、TPiCSが書出した印刷用CSVをExcelデザインファイルに読込みを行うためのもので、TxPrintMacro.xlsm内のVBAコードは消されません。
パターンファイルのバージョン確認は、Windows10の
[設定]-[更新とセキュリティ]-[Windowsセキュリティ]-[ウィルスと脅威の防止]
から確認できます。
スキャンの除外設定について
Windowsセキュリティの設定で、Excelデザインファイルが格納されているフォルダーをスキャン対象から除外することにより、DefenderによるVBAコードの削除を回避することができます。
VBAコード復旧について
TxPrintDesginなどExcelデザインファイルをカスタムして使用されているお客様は、以下の「復旧用のVBAコード」をExcelデザインファイルのVBAProjectに貼り付けすることで復旧できます。
復旧用のVBAコード
Private Sub Workbook_Open()
If OpenMacroBook Then
Application.Run "'" & GetMacroBookName & "'!TPrintDenp.Design_Open", ThisWorkbook.Name
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
CloseMacroBook
End Sub
Private Sub CloseMacroBook()
On Error GoTo skip
Workbooks(GetMacroBookName).Saved = True
Workbooks(GetMacroBookName).Close SaveChanges:=False
If Workbooks.Count = 2 Then
Application.Quit
End If
skip:
End Sub
Private Function OpenMacroBook() As Boolean
Dim wb As Workbook
Dim wbName As String
wbName = GetMacroBookName
OpenMacroBook = True
On Error Resume Next
Err.Clear
'ブックが既に開いているか
Set wb = Workbooks(wbName)
If Err.Number > 0 Then
Err.Clear
'ブックが存在しないか、開くことができないか
Set wb = Workbooks.Open(ThisWorkbook.path & "\" & wbName, ReadOnly:=True)
If Err.Number > 0 Then
OpenMacroBook = False
On Error GoTo 0
Exit Function
End If
End If
End Function
Private Function GetMacroBookName()
Const wbName As String = "TxPrintMacro."
GetMacroBookName = wbName & GetFileExtention(ThisWorkbook.Name)
End Function
Private Function GetFileExtention(FileName As String)
Dim FindPoint As Long
Dim StrLen As Long
'文字列の右端から"."を検索し、左端からの位置を取得する
FindPoint = Strings.InStrRev(FileName, ".")
'拡張子の長さを取得
StrLen = Strings.Len(FileName) - FindPoint
'拡張子の取得
GetFileExtention = Strings.Right(FileName, StrLen)
End Function
VBAコードの貼り付け
Excelのオプション設定で[開発]のリボンを表示して[開発]-[Visual Basic]を開き、[VBAProject(TxPrintDesign.xlsm)]-[Microsoft Excel Objects]-[ThisWorkbook]をダブルクリックして、上記の「復旧用のVBAコード」コピーし、保存します。
ThisWorkBookをダブルクリックでコード編集画面を開き、以下のように貼り付けます。