したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

CSVからXLS

6ニャン子:2004/01/24(土) 16:48
ニャン子です。これはあくまでイカサマ的な対処でしかありませんが、
保存する際にExcelVBAを利用し「名前をつけて保存」、「上書き保存」、
または終了時に発生する「xxxxの変更を保存しますか」で発生するイベントを
利用し、Excel形式のファイルを保存する直前にCSVを保存するという方法も
あります。これにより保存したXLSのファイルともうひとつ、同様のCSV
データを作る事となります。

プログラム例)
<pre>
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim x As Integer
Dim y As Integer
Dim MaxRow As Integer
Dim MaxCol As Integer
Dim wkStr As String
Dim SheetObj As Worksheet
Dim FileNo As Integer
Dim FileName As String

Set SheetObj = Worksheets("Sheet1") ' 保存するシートの名前

FileName = "c:\My Documents\Test.Csv" ' 保存するCSVのファイル名
MaxRow = 50 ' 保存するシートの範囲(最大行数)
MaxCol = 10 ' 保存するシートの範囲(最大桁数)

FileNo = FreeFile
Open FileName For Output As #FileNo

For y = 1 To MaxRow
wkStr = ""
For x = 1 To MaxCol
If Not (wkStr = "") Then wkStr = wkStr & ","

wkStr = wkStr & Chr(34) & Trim(SheetObj.Cells(y, x).Text) & Chr(34)
Next
Print #FileNo, wkStr
Next

Close #FileNo

End Sub
</pre>

ただ、注意してほしい事はこのイベントがメニュー選択時や終了時にファイル名
や保存するか否かが確定する以前に発生します。この他、WorkBook_BeforeClose
というExcelが終了する直前に発生するものもありますが現実的な対処では
ありません。

上記のプログラムはExcelのメニュー「ツール」−>「マクロ」のサブメニュー
「Visual Basic Editor」を選び、プロジェクトブラウザが表示されたら
プロジェクトウィンドウの「ThisWorkBook」を選択し、上記プログラムを書き
込んでください。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板