0

最近、私はレガシープロジェクトで働くようエスカレートされました。このアプリケーションは、コンテンツを .doc ファイルに抽出する Enterprise Architect のプラグインです。ポイントは、成功せずに、さまざまな場所から dll を参照しようとしたことです。

エラー: The type or namespace name 'Word' does not exist in the namespace 'Microsoft.Office.Interop' (are you missing an assembly reference?)

私が参照しようとした場所: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Word.dll C:\Windows\assembly\GAC_MSIL\Microsoft .Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll

私は Vistual Studio 2010 を使用しており、私のマシンには Office 2013 がインストールされていますが、Office 2010 を搭載したマシンでもテストされています。

アップデート:

コード内のどこでも「Word」という単語に下線が引かれ、コンパイル エラーが上に表示されます。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
namespace EATec.Helpers
{
/// <summary>
/// Classe que manipula documento Word via Interop
/// </summary>
public class MSWordHelper
{
     private static object format = Microsoft.Office.Interop.Word.WdOpenFormat.wdOpenFormatAuto;
     private static object wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue;
    public static Microsoft.Office.Interop.Word.Document OpenDoc(object fileName)
    {...
    }
4

1 に答える 1

0

Office の古いバージョンに対して構築されたレガシー アプリは、次のようなことを行っている可能性があります (C++):

#import <msword9.olb>   rename("ExitWindows","ExitWindowsWRD") rename "FindText","FindTextWRD") rename("ReplaceText","ReplaceTextWRD") rename("RGB","RGBWRD")

新しいマシンをセットアップするとき、古いファイルを再登録するためのバット ファイルがあります。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regtlibv12 "C:\Source\Office 97 dlls\mso9.dll"
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regtlibv12 "C:\Source\Office 97 dlls\msword9.OLB"
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regtlibv12 "C:\Source\Office 97 dlls\vbe6ext.OLB"

これは、PC に新しいバージョンの Office がインストールされている場合に実行する必要があります。

regtlibv12 は Windows 8 PC にない可能性があり、古い PC からコピーする必要があることに注意してください。

(これはほぼ 1 年前のものですが、現在新しい PC をセットアップしているだけです...)

于 2014-08-20T10:38:51.053 に答える