※ ChatGPTを利用し、要約された質問です(原文:CalcとExcelをマクロ中で判断 #if ~)
CalcとExcelをマクロ中で判断する方法はあるか?
このQ&Aのポイント
Calc(LibreOffice)かExcelかをマクロ内で判断する方法について質問しています。
CalcとExcelをマクロ内で#if ~ #endif を利用して判断する方法を試したが、適切な方法か不安です。
CalcとExcelの定数を利用して#if ~ #endif を使い、判断する方法を探していますが見つかりませんでした。
マクロの中で、#if ~ #endif を利用し、Calc(LibreOffice)かExcelかを判断したいと思っており、偶然実現出来そうな方法を見つけたのですが、本当にこれでいいの?という所もあり、質問させて頂きました。
例えば、Calc 側だけで定義されている定数(その逆でも)などがあれば、#if ~ #endif で判断できるかと思い探しましたが、見つけることが出来ていません。
xlNormalは、excelで定義されているものですが、以下のように実装すると、
calc は1(上)側、excelは2(下)側が実行されます。
尚、Calc側はOption VBASupport 1 としています。
どちらも、上側が実行されてもよさそうなのですが、理由はよく分かりません。
sub test ()
#if xlNormal then
msgbox 1
#else
msgbox 2
#end if
end sub
もし、これに代わるもっとスマートな形や標準的な方法がありましたら、ご教授お願いします。
お礼
ありがとうございます。 大変参考になりました。 32bit/64bit 共に、Win32 = 1 のようなので、 #If Win32 = 0 Then ● LibreOffice - CALC 時 #Else ● Excel 時 #End If と判断するようにしました。 尚、VBE では「条件付きコンパイル引数」を設定できますので、ここで MACRO_MODE = 1 などと定義する方法もありました。 CALC 側でのみ default で定義されている定数があれば、一番よかったのですが、 今回は、ご教授頂いた "条件付きコンパイル定数" の「Win32」を使用するようにしたいと思います。