• ベストアンサー

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。 ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。 なのですが、ExcelのデータをVBに読み込む方法がわかりません。 ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。 どなたか教えてください。

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

  • ベストアンサー
回答No.1

Open/Close では実質的に言って無理です。 ( Excel のファイル構造がわかればできるかもしれませんが・・・) VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと Dim eb As Object Dim es As Object Dim strFileName As String strFileName = "C:\Temp\Book1.xls" eb = GetObject(strFileName) es = eb.Sheets(1) MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information) eb = Nothing のような感じで Excel のような感じで内容を読むことができます。 (上の例では 1番目のシートの A列 2行目のセルの内容をメッセージボックスに表示します。) 並び替えですが、Excel 上で並び替えをすることも可能ですが、 読み込んでから並び替えをするなら、 VB6の場合:並び替え関数を自作(並び替えのアルゴリズムはクイックソートやヒープソートなどいろいろありますので、検索して調べてみてください。どこかに VB のサンプルがあるかも。) VB.NETの場合:Array.Sort が使用可能です。

shishsi
質問者

お礼

並び替えのことまで教えていただきありがとうございます。 効率よくプログラミングできそうです。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

<Book1.xls> 4444 2222 6666 1111 5555 3333 [イミディエイト] 4444 2222 5555 3333 6666 1111 2行を1ユニットとして並び替えて Debug.Print するサンプルコードは以下の通りです。 Private Sub Command1_Click()   Dim I      As Integer   Dim J      As Integer   Dim K      As Integer   Dim strTexts(2) As String      Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.workbooks.Open("C:\TEMP\Book1.xls")   For I = 0 To 2     For J = 0 To 1       K = K + 1       strTexts(I) = strTexts(I) & xlBook.sheets(1).cells(K, 1) & ";"     Next J   Next I   QSort strTexts(), 0, 2   Debug.Print CutStr(strTexts(0), ";", 1)   Debug.Print CutStr(strTexts(0), ";", 2)   Debug.Print CutStr(strTexts(1), ";", 1)   Debug.Print CutStr(strTexts(1), ";", 2)   Debug.Print CutStr(strTexts(2), ";", 1)   Debug.Print CutStr(strTexts(2), ";", 2)   xlBook.Close   Set xlBook = Nothing End Sub VB6.0 と VB.NET でコードの書き方は違うようで違うような。

shishsi
質問者

お礼

朝早くからありがとうございます。 例題のようなものまで作っていただいて、非常にわかりやすかったです。ありがとうございました。