プロが教える店舗&オフィスのセキュリティ対策術

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

ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。
なのですが、ExcelのデータをVBに読み込む方法がわかりません。
ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。

どなたか教えてください。

A 回答 (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 が使用可能です。
    • good
    • 0
この回答へのお礼

並び替えのことまで教えていただきありがとうございます。

効率よくプログラミングできそうです。
ありがとうございました。

お礼日時:2007/08/26 14:57

<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 でコードの書き方は違うようで違うような。
    • good
    • 0
この回答へのお礼

朝早くからありがとうございます。

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

お礼日時:2007/08/26 14:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!