Vs2013を使用しています。 Excelファイルを入力として使用し、ファイルから連絡を取るアプリケーションを作成しました。私のコンピューターではすべてが機能しています。私はVs2013を持っています。 Windows 8.1、MS Office 2007および2013。
他のコンピュータでアプリケーションを実行すると、スローされます
ファイルまたはアセンブリ 'office、Version = 15.0.0.0、Culture = neutral、PublicKeyToken = 71e9bc111e9429c'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません
アプリケーション要件に従って、Office 2007から2013までのExcelファイルを使用する必要があります。
StackOverflowリンクをいくつか紹介しましたが、結果が得られません。ハマった。これを解決する方法を教えてください。
他のマシンには、対応するバージョンのOfficeがインストールされている必要があります。 15.0.0.0はOffice 2013に対応している必要があります-ターゲットマシンにインストールする必要があります(他のバージョンのOfficeは動作しない可能性があります)。これはほぼ確実に、MSOffice相互運用ライブラリを使用していることを意味します。これは、Officeがインストールされており、同じバージョンに対してのみ機能します。
または、Excel XMLを直接読み取るようにコードをリファクタリングすることもできます。
Excel.dllのバージョンを変更して解決策を得ました。 15.0.0.0を使用していましたが、12.0.0.0に変更して正常に機能しました。 Add reference > Browse > C: > Windows > Assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll
からDLLを取得しました
この問題を修正するためにバッチファイルを作成しました。以下のスクリプトを参照してください。
echo off
cls
color 1f
echo Checking for Administrator elevation.
openfiles>nul 2>&1
if %errorlevel% EQU 0 goto isadmin
COLOR 4f
echo. You are not running as Administrator.
echo. This tool cannot do it's job without elevation.
echo.
echo. You need run this tool as Administrator.
echo.
echo.Press any key to continue . . .
pause>nul
exit
:isadmin
if exist c:\windows\Assembly\GAC_MSIL\office\16.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=16
if exist c:\windows\Assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=15
if exist c:\windows\Assembly\GAC_MSIL\office\14.0.0.0__71e9bce111e9429c\OFFICE.DLL set officever=14
md c:\windows\Assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c
xcopy c:\windows\Assembly\GAC_MSIL\office\%officever%.0.0.0__71e9bce111e9429c c:\windows\Assembly\GAC_MSIL\office\12.0.0.0__71e9bce111e9429c /s/y
pause