2014年8月28日木曜日

[VBA]Excel4.0マクロの資料

古のExcel4.0マクロ。時折メンテ依頼を受けることがあります。
見ればなんとなくわかりそうな感じですが、確認したいときもあるわけで。


Microsoftのサポートページに関数の説明がいくつか残っている模様。

http://www.microsoft.com/ja-jp/search/SupportResults.aspx?form=mssupport&q=%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86


あとは英語版のリファレンスがDLできます。
http://www.microsoft.com/en-us/download/details.aspx?id=19243

拡張子.sitで圧縮されているのでWindowsだと解凍用ソフト(Stuffit Expander 等)が必要。


どっちもMac向け資料になってるけど。



2014年8月27日水曜日

[PHP]配列データをCSV出力

下記のPHPを読み込めばテストデータのCSVがダウンロードされる。

fputcsv() で配列からCSVのテキストに変換してくれる。
配列中にダブルクォーテーションやカンマが入ってもOK。

//テストデータ
$arr = array(
 array('1', '田中', 'あいうえお'),
 array('2', '佐藤', 'かきくけこ'),
 array('3', '山田', 'さしすせそ'),
 array('4', '今"野', 'たち,つてと')
);

//出力用ヘッダ
header('Content-Type: text/csv; charset=Shift_JIS');
header('Content-Disposition: attachment; filename=data.csv');

//直接DL
$fp = fopen('php://output', 'w');

//配列ループ
foreach($arr as $arr_row){
 mb_convert_variables('SJIS-win', 'UTF-8', $arr_row); //UTF-8をSJISに変換
 fputcsv($fp, $arr_row); //配列をCSVに変換
}

fclose($fp);
CSVファイルをExcelで開くことを想定するとShift-JISにエンコードが必要。
(Excel2010ならUTF-8のままでも文字化けせずに開いてくれるが、Excel2003で開かれないとも限らないので。。。)

実行するPHPファイルがUTF-8(BOM付き)だと、 mb_convert_variables() で正しくエンコードされないので注意。(BOM外し忘れててハマりました)
文字コードをShif-JISに変更してもファイル頭に「・ソ」がついてるから、BOMが残ったままShift-JISになってるんだろうな。

mb_convert_variables() は mb_convert_encoding() と違って返り値を拾わなくてOK。