tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: エクセルの読込について
投稿日: 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した位置で使用するとエラーがなくなりましたので、エクセルから読込んだ変数からソフトで使用する変数に代入しなおしました。

エクセルのデータを読込んだ場合、このような動作するのは正常なのでしょうか。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。