執筆:EugeneAmnis
Excel for MacでのSaveAsを使ったUTF8形式のCSVファイル出力について
Excel2016か2019のどちらかからかは分かりませんが、いつの間にかにExcelはUTF-8形式のCSVファイル出力に対応しました。
鬼門だったUTF-8形式でのCSVファイル出力
長年Excelはデフォルトコード(日本ならShift_JIS)でのCSVファイル出力にしか対応しておらず、必要に応じてはテキストエディタなどで再度ファイルをUTF-8形式に変更した上で上書き保存するなりをしてきました。更にBOMと言う事実上Excel以外の読み込み先で問題が起こらないワードのおかげでExcelをさわり始めた頃は曖昧な感じで業務をこなしていた覚えがあります。
VBAの学習の一環として、UTF-8のCSVファイル出力を実装した事がある人も多いのではないでしょうか。しかし、Excel2016またはExcel2019以降では標準機能として実装されたので、その気苦労もなくなりました。
VBAのSaveAsはどうか?
VBAでファイルの保存操作をする際によく使用するSaveASこの関数は以下のように利用します。
保存したいブック.SaveAs filename:=保存先, FileFormat:=フォーマット定数
フォーマット定数は多く存在多く存在しますが、よく使用するものは以下になります。
xlCSV : デフォルトコードでのCSVファイル
xlWorkbookDefault : xlsxファイル
xlCurrentPlatformText : デフォルトコードでのTXTファイル
それらに新しくUTF-8形式でのCSVファイル出力用のxlCSVUTF8が追加されていました。実際に実装してみると普通に利用できました。Windowsでは。残念なことにMac版では・・・。
Excel for Macの呪い?
Mac版のVBA(Excel2019)では成功する時と失敗する時があり、不安定な挙動でした。パスに日本語が入っている、権限の譲渡のタイミング、ファイルパスの有無など試行錯誤を繰り返しましたが、事態は改善されず。原因は不明のままです。
今回、FormeStudio.xlsm Version 2.6ではエクスポート機能を強化し、AndroidアプリForMeのチェックシート機能との親和性を高めようと実装をしたのですが、仕方なくWindows版とMac版では挙動を変える事にしました。Mac版では新しくブックを開き、Excelの標準機能でエクスポートしてもらうと言う形を取りました。
忸怩たる思いですが、差異の激しいMac版のVBAを使う上ではある程度の諦めも必要なのも事実です。AppleScriptでの実装も考えましたが、もしかしたら、修正される可能性を信じて静観することにしました。