memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Excel2011のVBAでファイルを書き出す

■背景

会社員だった当時はRAD環境といえばVBAと思っていました。

Webシステムもありますが、今でもワークシート上でデータ入出力を直感的にデザインし変更できることからよいシステムだと思っています。

出席情報はExcelで個人管理しているのですが、学部のWebシステムで出席管理できることを知りました。

で、ExcelのデータをWebシステムに食わせる形式に変換するのにVBAを使うことにして。。。朝からあれこれ試行錯誤していました。(実はマニュアルがあるのですが間違っていて、その通りに入力しても受け付けられずエラーになりまして)

で、やっと入力形式がわかったところで、VBAでワークシート上のテキストをWebシステムの入力形式に変換するプログラムを作りました。そのプログラムではCSVファイルを生成しなければならず。。。Windowsでは作り方を知っていたのですが、MacのVBAではActiveXが使えないのでダメだ。。。と諦めていました。

が、探してみるとあるもので。実は簡単だったんですね。下記のリンクに書かれています。英語ですが。。。このコードではWindowsでもMacでも動くようです。Macしか試していませんが。。。

Link: Writing Mac-compatible File I/O code in VBA


■方法

BASIC世代にはなじみのある昔ながらの方法です。懐かしい。。。

以下、ファイルに文字を書き出すプログラムの一部です。Excelファイルと同一のディレクトリ内にファイルを生成します。

Sub saveHelloToFile(fileName As String)
    Dim filePath
    filePath = ThisWorkbook.Path & ":" & fileName & ".csv"
    Open filePath For Output As #1
    Print #1, "Hello"
    Close #1
End Sub

Macでもいけるんですね。。。勉強になった。