- ベストアンサー
Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。
Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。 ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。 なのですが、ExcelのデータをVBに読み込む方法がわかりません。 ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。 どなたか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 が使用可能です。
その他の回答 (1)
<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 でコードの書き方は違うようで違うような。
お礼
朝早くからありがとうございます。 例題のようなものまで作っていただいて、非常にわかりやすかったです。ありがとうございました。
お礼
並び替えのことまで教えていただきありがとうございます。 効率よくプログラミングできそうです。 ありがとうございました。