0

私はプロジェクトに取り組んでおり、基本的にExcelファイルからテキストボックスにデータ(セル単位)を表示する必要があります。次のコードを使用しました

Option Explicit On
Imports System.IO
Imports Microsoft.VisualBasic.FileIO

Partial Public Class Window2
    Dim objexcel As New Excel._ExcelApplication
    Dim objwork As Excel._ExcelSheet
    Dim objworksheet As Excel.Worksheet

    Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Window1.Loaded
        objwork = objexcel.Workbooks.open("D:\jkj.xlsx")
        objworksheet = CType(objwork.Worksheets.Item("Sheet1"), Excel.Worksheet)
        TextBox1.Text = objwork.cells(1, 1).text
        Textbox2.Text = objwork.cells(2, 1).text
        objexcel.Workbooks.close()
        objexcel.Workbooks.Quit()
    End Sub
End Class

しかし、それは次のエラーを示しています

メンバーが見つかりません。(HRESULT からの例外: 0x80020003 (DISP_E_MEMBERNOTFOUND))

誰かがコードの何が問題なのかを提案できますか? 私はネット上で高低を検索して読みました。

ありがとうございました!

4

1 に答える 1

0

あなたはいくつかの間違いを犯しました:

  1. objwork.cells(1, 1) -> objworksheet.cells(1, 1) である必要があります
  2. objexcel.Workbooks.Quit() -> objexcel.Quit() である必要があります
  3. objworksheet.cells(1, 1).text -> Range オブジェクトの取得とそのテキスト プロパティの取得を分割する必要があります。これは一般的な経験則です。「COM オブジェクトには 2 つのドットを使用しないでください」。これに従わないと、ユーザーがクライアント アプリを閉じた後でも Excel のスレッドが実行されたままになります。

また、try-catch ブロックを使用してコードを保護することも検討する必要があります。私の経験からすると、COM 経由で Office を操作しているときに予期しない例外が発生する可能性が多数あります。

于 2013-10-17T11:05:21.037 に答える