- PR -

VBからEXCELのデータを参照する場合について

1
投稿者投稿内容
はーみっと
会議室デビュー日: 2007/11/17
投稿数: 1
投稿日時: 2007-11-17 01:37
皆様、はじめまして、はーみっとと申します。

今、VBからEXCELのシートの列Aのデータを参照したく、
その列の最終データインデクスを取得するため、

end = Application.Workbooks(FName).Worksheets("sheet1").Range("a65536").row()

とコーディングしてみたのですが、
'Workbooks' は 'System.Windows.Forms.Application' のメンバではありません。
とエラーがでてしまいます。

また、変数endの定義にしても、

Dim end As Excel.Range

とすると、
'Excel.Range' が定義されていません。
となるため、変数定義さえできていません。

最初旧的な質問で申し訳ありませんが、解決策または
参考となるwebや本などありましたら、アドバイスを
お願いできませんでしょうか。

よろしくお願いいたします。
Tesla
常連さん
会議室デビュー日: 2007/03/13
投稿数: 30
投稿日時: 2007-11-17 02:37
引用:

end = Application.Workbooks(FName).Worksheets("sheet1").Range("a65536").row()

とコーディングしてみたのですが、
'Workbooks' は 'System.Windows.Forms.Application' のメンバではありません。
とエラーがでてしまいます。


規定ではSystem.Windows.Forms名前空間がインポートされるため、「Application」と記述すると「System.Windows.Forms.Application」を指定したものと認識されてしまいます。

クラス名は「Microsoft.Office.Interop.Excel.Application」のようにルート名前空間から記述します。

引用:

Dim end As Excel.Range

とすると、
'Excel.Range' が定義されていません。
となるため、変数定義さえできていません。


こちらも同様にルート名前空間から指定します。

また、名前空間を省略してクラス名を記述したい場合はImportsステートメントを使用します。
Imports ステートメント
http://msdn2.microsoft.com/ja-jp/library/7f38zh8x(VS.80).aspx
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-17 09:12
引用:

はーみっとさんの書き込み (2007-11-17 01:37) より:

end = Application.Workbooks(FName).Worksheets("sheet1").Range("a65536").row()
とコーディングしてみたのですが、


Tesla さんがご指摘された以外に 2 点。
  1. COM の参照カウントがデクリメントする機会を失っています。
  2. なぜ EntireRow や EntireColumn もしくは UsedRange を使わないのでしょうか?
気になったもので少し書かせて頂きました。

引用:

'Excel.Range' が定義されていません。
となるため、変数定義さえできていません。


名前空間のインポートのほかに、単に参照設定していない可能性もあります。("参照設定をした" という情報がありませんでしたので)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)