Access 2010のVBAコードに問題があります。型を宣言しましたが、この型の変数のポインターを(関数VarPtrを使用して)取得しようとすると、が取得されますcompilation error: incompatible type
。
Dim dm As DEVMODE
Dim pd As PRINTER_DEFAULTS
pd.pDevMode = VarPtr(dm) ' the line that throws the error
' pDevMOde is a Long that is supose to contain the adress of the dm variable
Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME ' (1 To CCHDEVICENAME) As Byte
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME '(1 To CCHFORMNAME) As Byte
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
問題は、このコードが以前のバージョンのAccessで作成され、バージョン2003以下で完全に機能することです。Access 2010で機能しない理由はわかりません。2010バージョンと2003バージョンの違いを調べましたが、これに関連するものは見つかりませんでした。
誰か手がかりがありますか?
ありがとう!