Excel for MacでのUTF-8テキストファイル出力方法(AppleScriptTask)実践2

April 14, 2023
excel vba Mac Excel for Mac

Excel for MacでのUTF-8テキストファイル出力方法(AppleScriptTask)実践2

作業の流れの再確認

前前回でも示しましたが、作業の流れは以下の通りです。

  1. AppleScriptで保存先とテキストを指定し、実行するとUTF-8形式のテキストファイルを保存するスクリプトファイルを作成する。
  2. 1のスクリプトファイルをExcel VBAのAppleScriptTask仕様に変更し、指定ファルダに保存する。
  3. 応用編:VBA単一で2を実装する。
  4. Excel VBA上でOS判定とスクリプトファイルの存在確認をした上で実行する。

今回は2. 1のスクリプトファイルをExcel VBAのAppleScriptTask仕様に変更し、指定ファルダに保存する。を行います。

AppleScriptTask仕様に変更

ExcelのAppleScriptTaskは以下のような形をとっています。

Dim Res as String

Res = AppleScriptTask("AppleScriptファイル名","関数名","引数")

AppleScriptファイル名は拡張子がなくても問題有りません。(気持ち悪いので筆者はつけていますが。)関数名は必須です。引数は文字列のみ指定が可能です。返り値も文字列のみです。尚、明確な確認はしていませんが受け取り側の関数が指定していないで使用するとVBEが構文エラーと判断する場合があります。

AppleScriptTask("AppleScriptファイル名","関数名","引数")

そのため、返り値が無い場合でもValiant型の関数を用意する必要が有ります。(アップデートで直る可能性もありますが)それでは前回作成したAppleScriptをon 関数名(引数) ~ end 関数名で囲み、引数とエラーに対応した形に変更していきましょう。

on st8(txtval)
	if txtval = "" then
		return
	end if
	tell application "Finder"
		activate
		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
			false
		end try
	end tell
	
end st8

前回と違う部分は”if txtval = “” then”で引数が無い場合はスクリプトを終了し、処理中に例外が発生した場合はfalseを返すようにしただけです。

次にExcel用のスクリプトフォルダに保存します。

スクリプトを指定ファルダに保存する。

Excel 2016 for Mac の VBA についてにも書いてありますが、まず AppleScript を以下のフォルダに設置します。

~/LibraryApplication Scripts/com.microsoft.Excel/

このフォルダの開き方は Finder > 移動(optionを押しながら) > Library > Application Scripts > com.microsoft.Excelです。com.microsoft.Excelがない場合は同名のフォルダを作成します。この中に作成・仕様変更したAppleScriptファイルを保存します。

今回は手動でスクリプトを保存しましたが、配布する場合はできればExcelファイルひとつにしたいと要望があると思います。次回はWebツールA2Vを使用した方法を紹介したいと思います。

Next Previous

3つの表

October 12, 2023
excel データ入力 操作

Excelで量産シミュレーション

October 12, 2023
excel データ入力 操作

テーブルについて

October 12, 2023
excel データ入力 操作