- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CalcとExcelをマクロ中で判断 #if ~)
CalcとExcelをマクロ中で判断する方法はあるか?
このQ&Aのポイント
- Calc(LibreOffice)かExcelかをマクロ内で判断する方法について質問しています。
- CalcとExcelをマクロ内で#if ~ #endif を利用して判断する方法を試したが、適切な方法か不安です。
- CalcとExcelの定数を利用して#if ~ #endif を使い、判断する方法を探していますが見つかりませんでした。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>calc は1(上)側、excelは2(下)側が実行されます。 Excel vbaでは、#ifで使える変数は ・#Constディレクティブで定義したコンパイル変数 ・「VBA7」や「Win64」などの定義済みコンパイル変数 だけです。 それ以外の定義済み変数を使用したり、未定義の変数を指定すると、すべて「False」と扱われます。 Calc(LibreOffice)では、この辺りの仕様が明確になってないので、Excel vbaとは異なる動作をする可能性があります。
お礼
ありがとうございます。 大変参考になりました。 32bit/64bit 共に、Win32 = 1 のようなので、 #If Win32 = 0 Then ● LibreOffice - CALC 時 #Else ● Excel 時 #End If と判断するようにしました。 尚、VBE では「条件付きコンパイル引数」を設定できますので、ここで MACRO_MODE = 1 などと定義する方法もありました。 CALC 側でのみ default で定義されている定数があれば、一番よかったのですが、 今回は、ご教授頂いた "条件付きコンパイル定数" の「Win32」を使用するようにしたいと思います。