2017-01-13 16 views
2

を使用してマクロがあるかどうかを確認するC#クライアントを使用してマクロを持つものを見つけるには、何百ものExcelファイルを調べる必要があります。ExcelブックにC#

私はここに受け入れ答えのコードを使用して試してみました:

Using Interop.Excel to check if Excel file contains VBA Macros

しかし、このコードは最初のファイルを開きます。ファイルの多くは、追加した後でもWindowsとVBAエラーメッセージをポップアップ表示しています_appExcel.DisplayAlerts = false

非常に遅いです。 Excelファイルを最初に開く必要はありません。

ここではMSDNのExcel interopのドキュメントを探しています:HasVBProjectがありますが、使用できる例はありません。

+1

は、それらの.XLSまたは.XLSMていますか? – Pierre

+0

XLSMとXLSBファイルがあります.cheers – Nick

+0

XLSBがあまりにも悪いです。 XLSMは単純に.zipファイルですが、直接作業することができます。 – Pierre

答えて

0

ワークブックのイベントはあなたがAutomationSecurityプロパティを通じてInterop.Excel名前空間を使用してすべてのマクロを無効にすることができますよりも、問題となっている場合は、この

f = Dir("*.xls*") 
While f <> "" 
On Error Resume Next 
    Set wb = Workbooks.Open(f) 
    If wb.HasVBProject Then 
     Debug.Print wb.Name & " has macro" 
    Else 
     Debug.Print wb.Name & "does not have macro" 
    End If 
    wb.Close 
    f = Dir 
Wend 
+0

こんにちは、ありがとうございますが、これはVBA.imのようにC#クライアントを使用してファイルを列挙しているようです。 – Nick

1

を試してみてください。

MyExcel.Application.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable; 
+0

ありがとう私はそれを試してみましょう。 – Nick

関連する問題