web-dev-qa-db-ja.com

Interop.Word Documents.Openがnullです

Interop.Word.Applicationを使用して.docxファイルを開いてPDFに変換しようとしています。コンソールアプリケーションとして機能しますが、Webアプリケーションで同じものを使用すると機能しません。フォルダのアクセス許可を確認しようとしました。フルコントロールで「ネットワークサービス」を指定しましたが、Word.Documents.Openでオブジェクト参照が設定されていません。何が問題なのか教えていただけませんか?このエラーです。お知らせください。提案があれば感謝します。ありがとうございます。

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

    object oMissing = System.Reflection.Missing.Value;

    Word.Visible = false;
    Word.ScreenUpdating = false;
    string fileName = @"c:\OUTPUT\test.docx");
    Document doc = Word.Documents.Open(filename, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing);
        doc.Activate();
18
nav100

あなたがまだ答えを探しているなら、私は私のプロジェクトで少し前にそれを見つけました。

DCOM構成設定を開きます。

  1. 開始-> dcomcnfg.exe
  2. コンピューター
  3. ローカルコンピュータ
  4. DCOMの構成
  5. Microsoft Word 97-2003 Documents->プロパティを検索します

タブIdentityLaunching UserからInteractive Userに変更

61
Gianni B.

これを試してみてください。

  • 「C:\ Windows\SysWOW64\config\systemprofile \」の中に新しい「デスクトップ」ディレクトリを作成します

それは解決策を探して長い長い長い一日の後に私のために働きます。

プロファイルの問題であるように思われます。

18
nacx08

これでうまくいきました。 https://social.msdn.Microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/Word-2007-documentsopen-returns-null-in-aspnet

これがあなたを助けるなら、それを答えてください

1
MJSL

PaulieがOPに関するコメントで述べたように、問題は主にWebサーバー上のライブラリが原因であると思います。これをハッキングしてWebアプリで機能させることができるかもしれませんが、これはお勧めしません。

[〜#〜] edit [〜#〜]:ああ、私は誤って投稿を読み、Excelであると想定しました。私の経験でOffice.Interopを使用するとき、ほとんどの人がそれを探します;)

DocX形式で動作するオープンライブラリがあります( ここにリンクの説明を入力 )。 残念ながら彼はページでPDFのような形式への変換はOffice.Interopライブラリなしではほとんど不可能であることを認めています( http: //cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html

ここ は「有望な」代替手段ですが、YMMVです。

0
Killnine

これを解決するには、私は両方のことをしなければなりませんでした:

  • ディレクトリを作成します。

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • DCOM設定を有効にする @ gianni-bが言うように

別の言語のためにDCOMエントリを見つけるのに苦労している場合は、これを行うことができます。

  1. スタートメニュー> regedit
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}に移動します
  3. 右クリック>新規>文字列値

    • キーには、RunAs
    • 値には、Interactive User

AppID {00020812-0000-0000-C000-000000000046}のExcelでも同じことができます。

0
vmassuchetto

私は次の手順を実行しましたが、問題なく動作しました。

  • デスクトップフォルダを作成する
  • DCOM要素を変更して、起動/対話型ユーザーではなく特定のユーザーでログインする
  • 同じ特定のユーザーとして開始するようにサービスを変更しました
0
Kevin Cloet

最も可能性が高いのは、Webサーバーに別のWord dll、おそらく古いDLLがあることです。特定のdllを参照してWebサーバーにコピーすることをお勧めします。これにより、コードをテストしたときと同じWord dllを使用していて、それが機能することを確認できます。相互運用機能を使用するときに問題が発生する可能性がありますが、Wordの相互運用機能が、Wordファイルを最も正しく変換できる唯一の機能です。

0
Ben