SAK 図書館
VB テクニック編16 - Excel XLS シート読み込み、XLS シート書き込み
■SAK 関数利用規程
・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
・著作権明示部分の改編は認めない。
・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
プログラムを開発することは自由です。
・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
その他有償プロダクトとして配布・販売するには、私の許可が必要です。
(無償のフリーソフトウェアなら、自由に配布しても良い。)
・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は
賠償しません。
■Excel XLS シート読み込み
・XLS シートを読み込んで、VB 内で様々な処理を行うことができる。
次の例では、XLS シート内のデータを CSV ファイルに変換出力している。
シートのセルを参照するには、cells を使用すると便利である。
(Excel 読み込み)
Dim fnm As String
Dim fnm2 As String
Dim rec As String
Dim i As Long
Dim j As Long
Dim exl As Object
fnm = "g:\tmp\test.xls"
fnm2 = "g:\tmp\test.csv"
Set exl = CreateObject("Excel.Application")
exl.Application.Visible = True
exl.Application.Workbooks.Open FileName:=fnm
Open fnm2 For Output As #1 Len = 32000
For j = 1 To 65536
If exl.Cells(j, 1) = "" Then Exit For
rec = ""
For i = 1 To 256
If exl.Cells(j, i) = "" Then Exit For
rec = rec & Chr(&H22) & exl.Cells(j, i) & Chr(&H22) & ","
Next
If Right(rec, 2) = Chr(&H22) & "," Then rec = Left(rec, Len(rec) - 1)
Print #1, rec
Next
Close #1
exl.Application.DisplayAlerts = False
exl.Application.Quit
■Excel XLS シート書き込み
・CSV ファイルを読み込んで、Excel シートに展開。
XLS ファイルに保存するには、次のようにします。
但し、コードのゼロ埋め処理はしていません。
(Excel 書き込み)
Dim fnm As String
Dim fnm2 As String
Dim rec As String
Dim i As Long
Dim j As Long
Dim k As Long
Dim exl As Object
fnm = "g:\tmp\test.csv"
fnm2 = "g:\tmp\test.xls"
Set exl = CreateObject("Excel.Sheet")
exl.Sheets(1).Name = "test"
exl.Application.Visible = True
exl.Windows.Arrange ArrangeStyle:=1
k = GetCntCSV(fnm)
Open fnm For Input As #1 Len = 32000
j = 1
Do Until EOF(1)
For i = 1 To k
Input #1, rec
exl.worksheets(1).Cells(j, i).Value = rec
Next
j = j + 1
Loop
Close #1
exl.saveas fnm2
■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料