0

約 1 年間、私の C# コードは Excel ファイルからデータをインポートするのに問題なく動作しました。

Microsoft.Office.Interop.Excel.Application objExcel = new Microsoft.Office.Interop.Excel.Application();
            objExcel.Visible = false;
            objExcel.Workbooks.Open(TemplateFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Microsoft.Office.Interop.Excel.Workbook TemplateWorkbook
Microsoft.Office.Interop.Excel.Range exRngFBCKIdent = null;
....

                foreach (Microsoft.Office.Interop.Excel.Worksheet objWorksheet in objExcel.ActiveWorkbook.Worksheets) //Loop through worksheets.
                {
                    // ...
                    try
                    {
                        exRngFBCKIdent = objWorksheet.get_Range("FBCKIDENT", Type.Missing);
                        ((Microsoft.Office.Interop.Excel._Worksheet)exRngFBCKIdent.Worksheet).Activate();
                    }
                    catch (Exception excException)
                    {
                        MessageBox.Show("ERROR: Range 'FBCKIDENT' was not found in the file - ensure this range is defined correctly and try again!", "Feedback Import", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return null;
                    }
...
}

その後、突然、特定の Excel ファイルに対して、コードの objWorksheet.get_Range 行で例外をスローし始めました。例外は次のとおりです。

objWorksheet.get_Range("FBCKIDENT", Type.Missing)   'objWorksheet.get_Range("FBCKIDENT", Type.Missing)' threw an exception of type 'System.Runtime.InteropServices.COMException'    Microsoft.Office.Interop.Excel.Range {System.Runtime.InteropServices.COMException}
base    {"Exception from HRESULT: 0x800A03EC"}  System.Runtime.InteropServices.ExternalException {System.Runtime.InteropServices.COMException}

objExcel オブジェクトを簡単に監視しようとすると、次のエラーが発生します。

Member 'Application' on embedded interop type 'Microsoft.Office.Interop.Excel.Workbook' cannot be evaluated while debugging since it is never referenced in the program. Consider casting the source object to type 'dynamic' first or building with the 'Embed Interop Types' property set to false when debugging

Interop type cannot be embeddedなど、考えられる解決策の調査に時間を費やしました 。ただし、Microsoft.Office.Interop.Excel dll の埋め込み相互運用タイプを変更すると、同じエラーが発生します。明らかな何かが欠けていますか?誰か提案はありますか?ティア。

4

1 に答える 1

0

データを手動で新しい Excel ファイルにコピーし、そのファイルをインポートすることで問題を解決したことに注意してください。元の Excel ファイルの何が問題だったのかはまだわかりません。皆さんの提案に感謝します。

于 2013-07-04T21:59:49.713 に答える