Excellent
システムコンサルタント社製のExcelアドインとして動作するBIツールでVBAのコードを出力することができます。
32bit/64bit VBA
Excellentの32bit版と64bit版どちらにも対応するVBA
# If VBA7 And Win64 Then
Declare PtrSafe Function XLTLoginP Lib "XLTVBA32.DLL" (ByVal PUID$, ByVal PPASS$, ByVal MSGF%) As LongPtr
Declare PtrSafe Sub XLTPassMask Lib "XLTVBA32.DLL" (ByVal FLG%, ByVal sLEN%, ByVal PASS$)
Declare PtrSafe Function XLTLogout Lib "XLTVBA32.DLL" (ByVal HDL As LongPtr) As Long
Declare PtrSafe Function XLTSQLExecS Lib "XLTVBA32.DLL" (ByVal HDL As LongPtr, ByVal DOM$, ByVal SQL$, ByVal MSGF%, ByVal HENF%, ByVal sROW&, ByVal JOBF%, ByVal SHEET$, ByVal ROWNO&, ByVal COLNO%) As Long
# Else
Declare Function XLTLoginP Lib "XLTVBA32.DLL" (ByVal PUID$, ByVal PPASS$, ByVal MSGF%) As Long
Declare Sub XLTPassMask Lib "XLTVBA32.DLL" (ByVal FLG%, ByVal sLEN%, ByVal PASS$)
Declare Function XLTLogout Lib "XLTVBA32.DLL" (ByVal HDL&) As Long
Declare Function XLTSQLExecS Lib "XLTVBA32.DLL" (ByVal HDL&, ByVal DOM$, ByVal SQL$, ByVal MSGF%, ByVal HENF%, ByVal sROW&, ByVal JOBF%, ByVal SHEET$, ByVal ROWNO&, ByVal COLNO%) As Long
# End If
Dim Handle As LongPtr
Dim Exec As Long
ようするに、
32bitのDeclare文の後ろにPrtSafeを追加すれば64bitのDeclare文に対応するので、ディレクティブで64bitと32bitを分ける。
HandleをLongPtr型にすればどっちにも対応※
※ Handleの型は32bit版はLong型ですが、LongPtrは32bitだとLong、64bitだとLongLongになるので、([LongPtr データ型][1])LongPtrにしておけばOK!
[1]:https://docs.microsoft.com/ja-JP/office/vba/Language/Reference/User-Interface-Help/longptr-data-type