今回もお世話になります。
VisualBasic.NETでプログラムを作っています。
Excelからデータを読み込んで配列に格納したいのですが、どうしてもうまくいきません。
原因とその解決法を教えていただけないでしょうか?
また、他の解決法や参考にできるサイトがあれば教えていただきたいです。
Excel,VB.NETともに2003を使っています。
以下エラー内容
--------------------
'System.NullReferenceException' のハンドルされていない例外が 重度障害者用入力装置自動選択システム.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
--------------------
以下ソースです
--------------------
Option Explicit On
Imports Microsoft.Office.Interop
Public Class Form2
Inherits System.Windows.Forms.Form
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xl As Object 'Excel.Application
Dim wb As Object 'Excel.Workbook
Dim ws As Object 'Excel.Worksheet
xl = CreateObject("Excel.Application")
wb = xl.Workbooks.Open("C:\abc.xls")
xl.Visible = True
ws = wb.Worksheets("Sheet1")
配列(1, 1, 1) = xl.Cells(2, 1).Value←ここでエラーが出る
配列(1, 1, 2) = xl.Cells(2, 2).Value
配列(1, 1, 3) = xl.Cells(2, 3).Value
状態表示テキストボックス.Text = "配列(1, 1, 1) = " & 配列(1, 1, 1) & "と" _
& "配列(1, 1, 2) = " & 配列(1, 1, 2) & "と" _
& "配列(1, 1, 3) = " & 配列(1, 1, 3)
xl = Nothing
wb = Nothing
ws = Nothing
End Sub
End Class
--------------------
回答よろしくお願いします。
No.5ベストアンサー
- 回答日時:
こんにちは
********引用*******
の部分で「型excel.Applicationが定義されていません」というエラーが出てしまいます。
*******************
私の場合、参照設定が、上手くいっていないと
このエラーが出るみたいです。
プロジェクトのプロパティを見て、
参照設定を見て、エクセルのオブジェクトライブラリーが追加されているか??
確認してみてください。
ありがとうございます!
結局csvを読み込んで配列に格納する方法をとることになりました。
この方法でも少し無理はあるのですが…
お礼が遅くなってしまい、もうしわけありませんでした。
また回答よろしくお願いいたします!
No.6
- 回答日時:
Private xlApp As Excel.Application
↓
Private xlApp As Excel.ApplicationClass
に変えてみてください。
COMを追加した際、参照設定に追加されるライブラリは
・Excel
・Microsoft.Office.Core
・stdole
・VBIDE
のようです。
この回答への補足
Private xlApp As Excel.Application
↓
Private xlApp As Excel.ApplicationClass
に変えてみてもエラー内容が「型Excel.ApplicationClassが定義されていません」に変わるだけでした。
参照設定に
・Excel
・Microsoft.Office.Core
・stdole
・VBIDE
が追加されているので参照はうまくいっているように思えるのですが…
現在はcsvに変換してから処理する方法を考慮中です。
ありがとうございます!
結局csvを読み込んで配列に格納する方法をとることになりました。
この方法でも少し無理はあるのですが…
お礼が遅くなってしまい、もうしわけありませんでした。
また回答よろしくお願いいたします!
No.4
- 回答日時:
こんにちは
エクセルのデータをA1:A10に以下のように設定して
aa
bb
cccc
ddd
eee
fff
gggg
hhhhhhh
ii
jjjjjjjj
以下の様なコードを実行すると
Public Class Form1
Private xlApp As excel.Application
Private xlBook As excel.Workbook
Private xlSheet1 As excel.Worksheet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 0
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open("C:\test1.xls")
xlSheet1 = xlBook.Worksheets("Sheet1")
For i = 1 To 11
Debug.WriteLine(i.ToString & xlSheet1.Cells(i, 1).Value)
Next
End Sub
End Class
実行結果
1aa
2bb
3cccc
4ddd
5eee
6fff
7gggg
8hhhhhhh
9ii
10jjjjjjjj
11
になりました。
参考まで
この回答への補足
private xlApp As excel.Application
の部分で「型excel.Applicationが定義されていません」というエラーが出てしまいます。
モジュールの一番上に
Option Explicit On
Imports Microsoft.Office.Interop
を追加し、
↓を参考にして「Microsoft Excel 11.0 ObjectLibrary」を参照に追加したのですが、どうもうまくいってないようです…
http://support.microsoft.com/default.aspx?scid=k …
No.3
- 回答日時:
>'System.NullReferenceException' のハンドルされていない例外が
> 重度障害者用入力装置自動選択システム.exe で発生しました。
このエラーがでるということは、
・[C:\abc.xls]Sheet1!A2が空になっている。
・配列が宣言されていない。
のいずれかだと思います。
配列のデータ型をObject型にしてNullも代入可能にしたらどうでしょうか?
ありがとうございます!
結局csvを読み込んで配列に格納する方法をとることになりました。
この方法でも少し無理はあるのですが…
お礼が遅くなってしまい、もうしわけありませんでした。
また回答よろしくお願いいたします!
No.1
- 回答日時:
こんにちは、
>配列(1, 1, 1) = xl.Cells(2, 1).Value ←ここでエラーが出る
xlだと、どのシートのデータか解らないので、
ws.Cells(2,1).Valueになるような気がします。
この回答への補足
回答ありがとうございます。
xlをwsにした場合、以下のようなエラーが出てしまいます。
'System.NullReferenceException' のハンドルされていない例外が 重度障害者用入力装置自動選択システム.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
xl.wb.ws.Cells(2, 1).Valueにした場合と
xl.wb.Cells(2, 1).Valueにした場合は
'System.MissingMemberException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。
追加情報 : 型 'ApplicationClass' でパブリック メンバ 'wb' が見つかりません。
というエラーが出て、
xl.ws.Cells(2, 1).Valueにした場合は
'System.MissingMemberException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。
追加情報 : 型 'ApplicationClass' でパブリック メンバ 'ws' が見つかりません。
というエラーが出てしまいます…
解決法はないでしょうか…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
【VB.NET】Excelの最終行までの取得方法
Microsoft ASP
-
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
-
4
vb.netによるEXCEL値取得
Microsoft ASP
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
エクセルのセル最終行取得
Visual Basic(VBA)
-
7
VBでの配列をEXCELに出力する方法
Visual Basic(VBA)
-
8
VB.NETでEXCELファイルを開き、保存先をデフォルトで指定したい。
Visual Basic(VBA)
-
9
.NET上でエクセル上に罫線を引く
Visual Basic(VBA)
-
10
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
11
DataGridViewで指定したセルの値を取得
Visual Basic(VBA)
-
12
VB.netでのExcelデータの読み込み
Visual Basic(VBA)
-
13
VB.NETで、配列をテーブルに変換して表示する。
Visual Basic(VBA)
-
14
VB.NetでExcelファイルをAccessのテーブルにインポートする方法を教えてください。
Access(アクセス)
-
15
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
16
VBからExcelのセルの書式設定を変更する
Visual Basic(VBA)
-
17
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
18
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
19
vb.netからエクセル関数書き込み
Visual Basic(VBA)
-
20
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
エクセルでXY座標に並べられた...
-
CheckBoxの配列化
-
Excel2010のinputboxで複数デー...
-
定数配列の書き方
-
VBAでMODE関数をつくる
-
Dir関数で読み取り順を操作でき...
-
VBA ReDim と ReDim Preserve ...
-
VB6のメモリ解放に関して
-
excel vbaの配列なんですが・・・
-
C#でbyte配列から画像を表示さ...
-
複数のtextboxの処理を一括で行...
-
配列のペースト出力結果の書式...
-
構造体配列内の文字列検索のよ...
-
.NET 文字コードの変換
-
VB6からの移行したいけど、VB.N...
-
countif/sumifのようなVBA関数
-
EXCEL VBA 配列デー...
-
テキストボックの文字を一行ず...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Excel2010のinputboxで複数デー...
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
VBAで配列引数を値渡しできない...
-
C++で作成したDLLにVBAから配列...
-
構造体配列の特定のメンバーをF...
-
OutOfMemoryExceptionの回避策...
-
大量の変数を定義するにはどう...
-
VBAでMODE関数をつくる
-
VBScriptでCSVファイルを読み出...
-
定数配列の書き方
-
Segmentation Fault (メモリ制限?)
-
Excelのメモリ(配列)の上限は2G...
-
Redim とEraseの違いは?
-
CheckBoxの配列化
-
配列の中の最大値とそのインデ...
おすすめ情報