• 締切済み

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にデータを入力すればよいのですが、実際はデータ量が多く、なんとか配列を用いて処理したいと思っています。 よろしくお願いいたします。 説明が足りない場合は遠慮なくお申し付けください。

みんなの回答

noname#221368
noname#221368
回答No.2

 もう少し直感的なコードも可能です。Worksheetを取得するところまでは#1さんと同じで、SWorkerとします。  Dim Values(3, 7) as Decimal  With SWorker   For i as Integer = 1 to 3    For j as Integer = 1 to 7     TestValue as Decimal = .Cells(i, j)     If IsNumeric(TestValue) = True Then      Values(i, j) = CDec(.Cells(i, j).Value)     End If    Next j   Next i  End With となります。速度は#1さんの方が速いですが、高速化する方法もあります。

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

VB.NET(2003)でExcelから取り込むまでは、こんな感じで出来ました。 Dim xlapp As New Excel.Application Dim xlwb As Excel.Workbook Dim xlws As Excel.Worksheet Dim xlrng As Excel.Range Dim v(,) As Object xlwb = xlapp.Workbooks.Open("R:\aaa.xls") xlws = xlwb.Worksheets("Sheet2") xlrng = xlws.UsedRange ReDim v(xlrng.Rows.Count, xlrng.Columns.Count) MsgBox(xlrng.Address) v = xlrng.Value MsgBox(UBound(v, 1) & "_" & UBound(v, 2)) Erase v xlwb.Close(False) パス・ファイル・シート名については適宜修正願います。 以降については初心者なので、回答は困難かも知れません。 (今日初めてやったものですので)

anton1353
質問者

お礼

ありがとうございます! 早速試してみます☆

関連するQ&A

  • VB2008 Excelにデータ出力

    VB2008で、Timerで更新されるTextBoxの数値をExcelに順次出力する(セルA1に出力したら、次の値をA2に出力、・・・)プログラムを作りたいのですが、どんなソースにすればよいか分かりません。 Web検索もしましたが、キーワードが悪かったのか、適したサンプルも見つかりませんでした。 VB Form上のTimerでTextBoxの数値を更新する部分はできていますので、指定のフォルダ内のExcelを開いてデータをセルに出力する方法を教えてください。 参考URLなどもあれば教えてください

  • エクセルVBで特定のセルのデータを削除する方法

    はじめて質問させて頂きます。 エクセルで、特定のセルに特定の入力があった場合に、特定のデータを削除する方法を教えてください。 エクセルのバージョンは、2010です。 VBのバージョンは、7.0です。 例えば、 A1セルに、 1 と入力した際に、C1からG1までのデータを削除する。 A2セルに、 1 と入力した際に、C2からG2までのデータを削除する。                     ・                     ・                     ・ A10セルに、 1 と入力した際に、C10からG10までのデータを削除する。 If Range("A1") = "1" Then Range("C1:G1").Clear End If と、やってみましたが、できませんでした。 宜しくお願い致します。

  • VBA経験者がVB2005を使えますか?

    今までExcel2000のVBAを使って簡単なプログラムを作っていました。今度本格的にVBでプログラムを組みたいのですが、Excel2000のVBAとVB2005はまったく違うものなのでしょうか?(言語の書式など) やりたいことはネット上からデータ(数値や文字列など)を収集して計算することです。株情報などのデータを収集して最適な結果を導き出すもので、今まではExcelで手動で入力していたものを自動化したいと思っています。 また、この場合はVisualStudioではなくてVisualBasicだけを購入すればいいのでしょうか? よろしくお願いします。

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

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

  • VB6.0でExcelの操作。

    お世話になっております。 VB6.0上で、Excelオブジェクトの書きこみロジックを作成しているのですが、Excelオブジェクトを作成し、セルへのデータの書きこみ等は問題なくできるのですが、フォントを変えたり、線を引いたり、オートシェイプを操ったり・・・等の方法がいまいちわかりません。自分でも調べてはいるのですが、VB6.0でのそういったExcel操作事例集のようなサイトがありましたら、教えて頂けないでしょうか?

  • VBで、開いているExcelシートのアクティブセルの情報を取得

    VBのモジュールで、開いているExcelシート上のアクティブセルの座標、値を 取得するにはどうすればよろしいのでしょうか。まずVBモジュールと参照対象のExcelシートを起動します。次ににExcelシート上のあるセルを選択し、VBモジュールの[セル情報]等のボタンにより、選択されているセルの座標、値をメッセージボックスに表示したいのです。よろしくお願いいたします。

  • VB.net(2003)でのexcel操作

    現在vb.netを使用してのExcelそうさプログラミングを作っており、excel sheetへの文字入力はできるようになりました。そこで質問なのですが、excelシートの特定のセルの値が5だった場合にその隣のセルのあたいを10にするというプログラムを作りたいのですが、VBAではとても簡単なのですが、vb.netを使用してどのようにやればよいかがわからないのでご教示いただきたいです。activecell.offset(0,1)やcells.findのような、VBAをVB.netから使用する方法はあるのでしょうか?

  • 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のデータを参照するには?

    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等でも構いませんので、教えていただけませんか。

  • VB6で変数の配置転換

    VB6を使用して、例えば「a(0)~a(7)」までの変数と「b(0)~b(7)」までの変数を宣言している時、a(0)~a(7)には元々数値が入っていて、それをb(0)~b(7)に並びを変えて数値を入れるのに簡単な方法はありますか? 例) a(0)=0 a(1)=1 a(2)=2 ・・・ a(7)=7 b(0)=a(5) b(1)=a(3) b(2)=a(1) ・・・ b(7)=a(2) などに置き換えたい場合です。 bに入れる数値のa()の並びは一定です。 aに入れるの数値は固定データです。 単純に一つずつ入れてもできるのですが、データが多くて時間がかかるので簡単な方法があれば教えてください。

専門家に質問してみよう