執筆:EugeneAmnis
Excel for MacでのUTF-8テキストファイル出力方法(AppleScriptTask)実践
作業の流れの再確認
前回でも示しましたが、作業の流れは以下の通りです。
- AppleScriptで保存先とテキストを指定し、実行するとUTF-8形式のテキストファイルを保存するスクリプトファイルを作成する。
- 1のスクリプトファイルをExcel VBAのAppleScriptTask仕様に変更し、指定ファルダに保存する。
- 応用編:VBA単一で2を実装する。
- Excel VBA上でOS判定とスクリプトファイルの存在確認をした上で実行する。
今回は1.のAppleScriptの作成を行います。
AppleScriptの作成
長くMacの自動化スクリプトとして存在しているAppleScriptですが、自然言語系のプログラミング言語とはいえ、初見で理解するのは無理が有ります。(というか筆者も毎回調べている。)そんなときは偉大な先人たちのサイトを参考にしながら作業を進めましょう。
今回のUTF-8テキストファイル出力では話を簡単にするため、テキスト内容のみを引数とし、ファイル名や保存場所はユーザーが任意で選ぶ形を取ります。ファイルパスなども指定したい場合、ExcelのAppleScriptTaskでは引数が文字列しか選べないので、AppleScript側で文字列を分割するなり(AppleScriptは案外これが面倒)何らかの対応する必要が有ります。
まず、動作確認の為に保存内容を直書きしたAppleScriptを作成します。Application > スクリプトエディタを起動し、コードは以下のように記入します。
tell application "Finder"
activate
set txtval to "Test file."
try
set dpath to choose file name with prompt "Input New FileName." default name "newdata.csv"
set spath to (dpath as string)
if (offset in spath of ".") = 0 then
set spath to spath & ".txt"
end if
try
set tfile to open for access file spath with write permission
set eof of tfile to 0
write txtval to tfile as «class utf8»
end try
close access tfile
on error number err_num
end try
end tell
保存内容は”Test file.“、デフォルトの名前は”newdata.csv”です。”choose file name with prompt”はファイル保存ダイアログを表示し、ユーザーに拡張子を含むファイル名と保存先を指定してもらうAPIです。
もし、ユーザーが拡張子を消したときの対応を”if (offset in spath of “.”) = 0 then”でしています。キャンセルした場合の措置は”on error number err_num”でfalseを返すようにしています。尚、文字コードは書き込みをする段階で”as «class utf8»”を明示的に指定しています。
実行すると以下のようなダイアログが表示され、名前をつけて保存することができます。
動作確認をし、問題なければ任意の名前で保存して次のステップに移行します。
次回はAppleScriptのExcel用ラッピングとスクリプトフォルダへの保存です。