タイトル | : Re^2: エクセルの読込について |
記事No | : 10918 |
投稿日 | : 2012/09/04(Tue) 20:39 |
投稿者 | : モモカツ |
> > 最近、『VB2010からExcelを操作するためのワンポイントテクニック集』が追加となり参考にさせていただいております。 > > > > このたびの追加集を拝見していますが、既存のエクセルファイルの内容を読込むようなサンプルを探していますが見当たらないように思います。 > > .NETからExcelの基本的な操作方法 > http://www.hanatyan.sakura.ne.jp/dotnet/Excel01.htm > > Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click > Call ExcelOpen("", "") '新規ファイルをオープンして、Excel を起動 > '既存のファイルをオープンして、Excel を起動する場合 (ファイルのフルパス , シート名) > 'Call ExcelOpen(System.IO.Path.GetFullPath("..\..\..\data\DBTest.xls"), "Sheet1") > '--------------------------------------------------------------------------------------------------- > > 上記のコメントの部分に書いていますが。? > > 詳細は、Private Sub ExcelOpen(ByVal FilePath As String, ByVal SheetName As String) 内を > 参照して下さい。 > > > > 又、下記やサンプル投稿用掲示板のサンプルにも書いていたはずですが > http://www.hanatyan.sakura.ne.jp/dotnet/Excel06.htm > こちらは、既存のファイルをオープンしております。
ご回答いただきましてありがとうございます。 エクセルファイルのシート名を指定してオープンできていましたが、シート内のデータの読み方がわかりませんでした。 質問した後にいろいろとトライしてみたところ、以下のようにしたら読めたのですが、このような方法で大丈夫でしょうか。
Dim Xls_Data(1000, 20) Dim Buf_Data(11, 10) As Object ' エクセルの必要な部分だけを読込む xlRange = xlSheet.Range("A1:J11") ' 変数代入を先頭から11行目/先頭列から10列目に設定 Buf_Data = xlRange.Value MRComObject(xlRange)
For i = 1 To 11 For j = 1 To 10 Xls_Data(i - 1, j - 1) = Buf_Data(i, j) Next Next
なお、Buf_Data(11, 10)の2次元配列にしてデバッガ−で変数内容を見ると(0,0)から入力されていますが、この変数を使用してFor-Next文内でIf文で判断する際に“インデックスが配列の境界外です”とエラーとなります。 そこで、変数の先頭を(1,1)と+1した位置で使用するとエラーがなくなりましたので、エクセルから読込んだ変数からソフトで使用する変数に代入しなおしました。
エクセルのデータを読込んだ場合、このような動作するのは正常なのでしょうか。
|