web-dev-qa-db-ja.com

Microsoft.Office.Interopを使用してファイルを開くときにポップアップを無効にする方法

読み取り専用の確認、その他のアラートなど。これらのポップアップをどうするか?またはそれらを無視しますか?

20
Bruce Dou

私の答えを参照してください ここ。

基本的に、「アラートの表示」方法ですべてのアラートを無効にします。

Microsoft.Office.Interop.[OFFICE_APP].Application app = new Microsoft.Office.Interop.[OFFICE_APP].Application();
app.DisplayAlerts = false;

ここで、[OFFICE_APP]は、Word、Excelなど、使用しているOfficeプログラムの名前です。

31
dotNetkow

マクロを許可するように求めるセキュリティメッセージを防ぐための別の方法があります。

私はMSDNから この記事 を読み、次のコードを理解しました:

Application wordApp = new Application()
{
    Visible = false,
    AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
};

ファイルを開く前にファイルのコピーが作成されるため、AutomationSecurityをデフォルト設定に戻す必要はありません。

2
Uriel Fernandez

注の追加:パスワードで保護されている一部のファイル形式(.XLSをテストしましたが、おそらく他の形式もテストしました)の場合、app.DisplayAlerts = falseはパスワードダイアログをバイパスしません。

この状況では、開いたときに偽のパスワードを渡すだけで、エラーがスローされます。必要に応じてキャッチします。

var app = new Application();
app.DisplayAlerts = false;
var workbook = app.Workbooks.Open(filePath, "fakePassword"); // Bypasses dialog, throws error

この状況でスローされるエラーは次のとおりです。

System.Runtime.InteropServices.COMException:指定したパスワードが正しくありません。 CAPS LOCKキーがオフになっていることを確認し、正しい大文字を使用してください。

0

これを試して:

Microsoft.Office.Interop.Word.Application appWord = new 
Microsoft.Office.Interop.Word.Application();

appWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;

これにより、ポップアップが無効になります。

0
Azhar