0

VBA で Excel 内に非常に便利なマクロを作成し、それを VB.net で作成されたスタンドアロンの Windows アプリケーションに転送しようとしています。私はすべての参照がかなり混乱していることに気づき、コードの一般的な構文を変換する際に問題に直面しています。

関連するコードの下に貼り付けています。

  Dim ElevenSheets As Excel.Worksheet
    Dim TwelveSheets As Excel.Worksheet
    Dim ThirteenSheets As Excel.Worksheet
    Dim WorkingSheet As Excel.Worksheet
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open("FILENAME.xls") 'Removed file name for company confidentiality purposes.
    ElevenSheets = xlWorkBook.Worksheets("2011")
    TwelveSheets = xlWorkBook.Worksheets("2012")
    ThirteenSheets = xlWorkBook.Worksheets("2013")
    WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")
...
    Cell = WorkingSheet.Range("B3")  '<--- This line causes the error.
            CurrentCell = (Cell.Row & "," & Cell.Column)
            CurrentRow = Cell.Row
            MyColumn = (Cell.Column)
            CurrentCell = (CurrentRow & "," & MyColumn)

ご覧のとおり、エラーが発生する行を指摘しました。範囲名「Cell」を設定しようとしていますが、「MissingMemberException unhandled No default member found for type 'DBNull'」というエラーが表示されます。

私が間違ったことを誰か知っていますか?私の構文では非常に単純なものだと確信していますが、このプロセス全体が難しく、インターネット上の他の合理的に類似したトピックを理解するのも難しいと感じています.

これを準備していただきありがとうございます。さらにコンテキストが必要な場合はお知らせください。

ジョシュ

4

2 に答える 2

0

Cell のコンストラクターが表示されません。また、これらすべてのワークシートを明示的に宣言する必要はありません。xlWorkBook("WorkingSheet").Range("B3") のようなものを使用して簡単に呼び出すことができます

于 2013-07-24T15:56:47.920 に答える
0

試行錯誤して問題を修正しました。私がやった方法は、単にこれらの宣言を変更することでした:

ElevenSheets = xlWorkBook.Worksheets("2011")
TwelveSheets = xlWorkBook.Worksheets("2012")
ThirteenSheets = xlWorkBook.Worksheets("2013")
WorkingSheet = xlWorkBook.Worksheets("WorkingSheet")

これに:

 ElevenSheets = CType(xlWorkBook.Worksheets(1), Excel.Worksheet)
 TwelveSheets = CType(xlWorkBook.Worksheets(2), Excel.Worksheet)
 ThirteenSheets = CType(xlWorkBook.Worksheets(3), Excel.Worksheet)
 WorkingSheet = CType(xlWorkBook.Worksheets(4), Excel.Worksheet)

シート名をシート番号に変更したことで修正されたのか、修正されたのかわかりませんCType。しかし、そのうちの1人はそうしました。

貢献していただきありがとうございます。

于 2013-07-25T09:15:40.223 に答える