• ベストアンサー

VB.netでのExcelデータの読み込み

プログラミング初心者です。VB.net2003を使っています。 エクセルでBの列のセルデータを読み込みたいのですが、Bの列の3行目のセルから同列の最後のデータが入っているセルまでを1つずつ順番に取得して、それを配列に代入するにはどうすれば良いのでしょうか? 初歩的な質問で申し訳ないのですがよろしくお願いします。

  • 4622
  • お礼率50% (1/2)

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

n-junです。 Dim v As Object For Each v In xlWs.Range("B3", xlWs.Range("B" & xlApp.Rows.Count).End(Excel.XlDirection.xlUp)).Value MsgBox(v) Next 追加します。

4622
質問者

お礼

n-junさん 回答ありがとうございます!教えていただいた方法でやって みましたら、うまくいきました!

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

取り敢えずB3~B最終行までのセル範囲を取得するのなら Dim xlApp As New Excel.Application Dim xlWb As Excel.Workbook = xlApp.Workbooks.Open("D:\aaa.xls") Dim xlWs As Excel.Worksheet = xlWb.Worksheets("Sheet1") Dim xlRng As Excel.Range = xlWs.Range("B3", xlWs.Range("B" & xlApp.Rows.Count).End(Excel.XlDirection.xlUp)) MsgBox(xlRng.Address) あとはFor Each等が良いのかな?

関連するQ&A

  • OleDbDataReaderでExcelデータの読み込み

    VB2008からExcelのデータを取得しようとしています。 上から1行づつ読み込み処理をします。 各行でデータの入っている列数が変わります。 今作ったファイルでは OleDbDataReaderのFieldCountが77になりました。 これを For cnt = 0 to rdr.FieldCount - 1 Debug.WriteLine(rdr.GetString(cnt)) next とやると1行目のcnt=6で落ちてしまいます。 メッセージは 指定されたキャストは有効ではありません。 です。 excelのデータは1行目はE列まで入っています。 もっと早くExcelからデータ読み込む方法であれば 他の方法でもかまいません。 どうやったら列数の違うシート全体を取込めるでしょうか?

  • VB.net2003のエクセルからデータを取得したいのですが・・・

    お世話になります。 VB.NET2003でExcel XPのセルの数値を取得しTextBoxなどで表示させたいのですが、うまいこといきません。 下に考えてみたコードを書いてみます。 とりあえずExcelのA1セルの値を取得してみたいのですが、後ほどループで他のセルの値も取得したいと思っています。 これを回すと、num(1, 1) = sheet.cells(1, 1)(下から3行目)で”追加情報 : 型 'Range' から型 'String' へのキャストが有効ではありません。”とされます。 どなたかご教授お願いしますm(__)m Private Sub exel_open() '------配列設定----- Dim app As Object 'エクセルアプリケーションの定義 Dim book As Object 'ブックの定義 Dim sheet As Object 'シートの定義 Dim col, row As Integer 'colは行、rowは列 Dim num(1, 1) As String '各セルの値を取得 '------エクセルファイルを開く&表示------- app = CreateObject("Excel.Application") app.application.visible = True book = app.Workbooks.Open("D:\test.xls") 'エクセルファイルのopen sheet = book.Worksheets(1) '-----エクセルデータの読み込み------ num(1, 1) = sheet.cells(1, 1) TextBox1.Text = num(1, 1) End Sub

  • VBから起動したEXCELの表示設定

    いつもお世話になります。VB2005、EXCEL2003です。 表題のようにVBからExcelを起動して、VB上のデータを送りつけて表示します。この時、Excelの列の幅、行の高さ、セルの表示形式を通貨、パーセントスタイルなど、VB上で指定しておくことができないものなのでしょうか? あるいは、あらかじめ項目など要求する表示形式を決めたExcelに、VBよりデータのみ送りつけることができててもよいのですが。 以上、可能であればご教授願います。

  • VB2008でExcelのセルを読み込む

    VB2008でExcel(.xls)のセルデータを読み込もうと思い、ネットにあるものを試しましたが、全くよみこめません。列と行を整数型変数で指定して読み込む方法を教えてください。

  • バイナリデータの検索(VB.NET2008)

    バイナリファイルを読込み、バイト配列に格納しています。 aaa(0) = 0 aaa(1) = 90 aaa(2) = 0 aaa(3) = 255 aaa(4) = 255 aaa(5) = 0 aaa(6) = 255 この配列から、「FFFF」が見つかった位置を検索したいと考えています。 (上の例で言うと3を取得したい) 現在は配列の最初から最後まで1バイトずつずらして読込み、見つかった場所を特定しています。16進表記の文字列に変換し、文字列として検索する方法も考えましたが、どちらも非効率な気がしています。 他のやり方を知っている方がいましたら教えてください。 [環境] VB2008,XP32SP3

  • VBからExcelのデータを参照するには?

    VBからExcelのデータを参照するには? ExcelのA列を、参照しようとしています。 このA列には数字も混じっています。 例えば A123 abc 456 qwer のように、4行あったとします。 VBのソースコードは、次の通り --------------------- Dim elSequence(10) As String i = 0 Do Until objSheet.Range("a2").Offset(i,0).Value = "" elSequence(i) = objSheet.Range("a2").Offset(i,0).Value i += 1 Loop --------------------- 問題は、Excelのセルに「数字だけの場合(上記の例で4行目)」で、VBはこれを、文字列として扱わずにDouble型と認識してしまいます。 例え、Excelのセルを、プロパティの文字列指定としても「456」はDouble型になってしまいます。 Excelから受け取ったデータを、文字列への変換はどのようにしたら良いですか。 参考になりそうなWeb等でも構いませんので、教えていただけませんか。

  • ExcelデータをVB.NETに取り込みたいのですが

    現在ExcelデータをVB.NETに取り込もうとしています。ただ単純に取り込む方法では出来ないと思われ、是非皆さんに知恵を貸して頂きたいと思います。 セルA1~G1、A2~G2、A3~G3のセル位置をそれぞれ座標(1,1)~(1.7)、(2.1)~(2,7)、(3,1~3,7)とみなし、そのセルの数値を(i、j)の変数を用いて配列的に取り込むにはどうすればよろしいでしょうか? 例えばA1の数値が5、B1の数値が7、A2の数値が3だった場合、VB内では(1,1)=5、(1,2)=7、(2,1)=3というようにExcelデータを取り込みたいのです。この場合はデータ数が少ないので手動でVBにデータを入力すればよいのですが、実際はデータ量が多く、なんとか配列を用いて処理したいと思っています。 よろしくお願いいたします。 説明が足りない場合は遠慮なくお申し付けください。

  • VB.NET

    VB.NETでプログラミングしているのですが初歩的なことで躓いてしまいました。 画面Aのボタンをクリックして画面Bに移動させたいのですが調べても出てこないので詳しい方、教えて下さい。

  • VB.NET!!

    VB.NETでプログラミングしているのですが初歩的なことで躓いてしまいました。 画面Aのボタンをクリックして画面Bに移動させたいのですが調べても出てこないので詳しい方、教えて下さい。

  • VB.NET 配列の格納

    VB.NET 配列の格納 エクセルから任意の列の値を格納したいのですが・・・ 現在、値の取得は以下のようなFor文ループを書いています。 各値を一時記憶(格納)したいのですが、どう書けばいいのでしょうか。 また、各列内で重複する値があった場合、重複を避けて値を取得したいのですが どう書いていいかわかりません。 初歩的な質問で申し訳ありませんが、宜しくお願いします。 PN()→G列の各セルの値の変数 JN()→H列の各セルの値の変数 の変数GYO→シートの最終行 j = 1 For i = 1 To GYO '【リストのG列から部品番号を取得】 PN(j) = xlSheet.Cells(i, 7).Value '【リストのH列から部品和名を取得】 JN(j) = xlSheet.Cells(i, 8).value Next

専門家に質問してみよう