4.8k Aufrufe
Gefragt in Datenbanken von bollerkohl Mitglied (175 Punkte)
Hallo Leute,

ich habe eine funktionierende Access DB unter 32Bit erstellt. Diese kann ich unter Access 2013 Windows 8 nicht öffnen. Hier erscheint immer eine Fehlermeldung.

Fehler beim kompilieren: Der Code in diesem Projekt muss für diese Anwendung....

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long
Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long


Hat jemand eine Idee und eine ggf. Lösung?

Danke

6 Antworten

0 Punkte
Beantwortet von
Der Code in diesem Projekt muss für diese Anwendung....
diese Meldung ist nicht komplett. Warum läßt du die Hälfte weg? Noch dazu wenn die Fehlermeldung ja eigentlich die Lösung mitbringt

Fehler beim Kompilieren: Der Code in diesem Projekt muss für die Verwendung auf 64-Bit-Systemen aktualisiert werden. Überarbeiten Sie Declare-Anweisungen, und markieren sie mit dem PtrSafe-Attribut.


aus
Declare Function GetOpenFileName

das machen
Declare PtrSafe Function GetOpenFileName


sollte funktionieren
0 Punkte
Beantwortet von gresti Experte (1.8k Punkte)
Hallo Bollerkohl,

eventuell hilft Dir ja dieser Link weiter:

www.altova.com/de/Access-Database-OLEDB-32bit-64bit.html

viel Erfolg wünscht Dir

der gresti
0 Punkte
Beantwortet von
wichtig wäre zu wissen ob du office 2013 64bit oder 32bit installiert hast
0 Punkte
Beantwortet von bollerkohl Mitglied (175 Punkte)
Hallo Leute,

danke für die Starthilfe:

Es ist Access 2013 64Bit.

hier der Code wo der Fehler auftritt:

Erwartet: Sub oder Function

[code]
Option Compare Database
Option Explicit

Type DateiDialogStruktur
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long
Declare PtrSafe GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long


Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_EXPLORER = &H80000
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_LONGNAMES = &H200000
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHAREWARN = 0
Public Const OFN_SHOWHELP = &H10

Dim DateiDialogStruktur As DateiDialogStruktur


Function DateiOeffnen(Verzeichnis As String, Fenstertitel As String) As String
On Error GoTo Err_DateiOeffnen

Dim Dateityp As String
Dim Dateiname_mit_Pfad As String
Dim Dateiname As String
Dim Rueckwerte As Long

Dateityp = ""

' Dateitypen in der Auswahlliste des Dateityp's
' Alle Dateien
'Dateityp = Dateityp & "Alle Dateien (*.*)" & Chr$(0) & "*.*" & Chr$(0)

' Access-Dateitypen
Dateityp = Dateityp & _
"JPG-Datei (*.jpg)" & Chr$(0) & "*.jpg" & Chr$(0)

Dateityp = Dateityp & _
"Gif-Datei (*.gif)" & Chr$(0) & "*.gif" & Chr$(0)

' Vorgegebenes Verzeichnis
If Verzeichnis = "" Then
' Wenn leer, dann soll das aktuelle Verzeichnis verwendet werden
Verzeichnis = CurDir$ & Chr$(0)
Else
' ANSI "0" an das übergebene Verzeichnis anhängen
Verzeichnis = Verzeichnis & Chr$(0)
End If

If Fenstertitel = "" Then
' Wenn kein Titel übergeben worden ist
Fenstertitel = "Datei öffnen"
Else
' ANSI "0" an übergebenen Fenstertitel anhängen
Fenstertitel = Fenstertitel & Chr$(0)
End If

' Speicherplatz für Dateieintrag (mit Pfadangabe) reservieren
Dateiname_mit_Pfad = Space$(255) & Chr$(0)

' Speicherplatz für Dateieintrag (ohne Pfadangabe) reservieren
Dateiname = Space$(255) & Chr$(0)

'Datenstruktur von DateiDialogStruktur festlegen
DateiDialogStruktur.lStructSize = Len(DateiDialogStruktur)
DateiDialogStruktur.hwndOwner = 0&
'DateiDialogStruktur.hwndOwner = Application.hWndAccessApp
DateiDialogStruktur.lpstrFilter = Dateityp
DateiDialogStruktur.nFilterIndex = 1
DateiDialogStruktur.lpstrFile = Dateiname_mit_Pfad
DateiDialogStruktur.nMaxFile = Len(Dateiname_mit_Pfad)
DateiDialogStruktur.lpstrFileTitle = Dateiname
DateiDialogStruktur.nMaxFileTitle = Len(Dateiname)
DateiDialogStruktur.lpstrInitialDir = Verzeichnis
DateiDialogStruktur.lpstrTitle = Fenstertitel
DateiDialogStruktur.flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST _
Or OFN_HIDEREADONLY Or OFN_LONGNAMES
DateiDialogStruktur.nFileOffset = 0
DateiDialogStruktur.nFileExtension = 0
DateiDialogStruktur.lCustData = 0
DateiDialogStruktur.lpfnHook = 0
DateiDialogStruktur.lpTemplateName = ""

Rueckwerte = GetOpenFileName(DateiDialogStruktur)

If Rueckwerte <> 0 Then
DateiOeffnen = Left(DateiDialogStruktur.lpstrFile, _
InStr(DateiDialogStruktur.lpstrFile, Chr$(0)) - 1)
End If

Exit_DateiOeffnen:
Exit Function

Err_DateiOeffnen:
' MsgBox Err.Description
Resume Exit_DateiOeffnen

End Function


DANKE :-)
0 Punkte
Beantwortet von
Lib "comdlg32.dll"


du wirst wohl mit office 64bit keine 32bit dll "so einfach" aufrufen können, wo denkst du hin. da musst du dir schon die vorgaben zur kompatibilität 64bit <-> 32bit access angucken und richtig deklarieren etc.

LG
0 Punkte
Beantwortet von
Erwartet: Sub oder Function
...
...
Declare PtrSafe GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long

muss so aussehen

Declare PtrSafe Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
(DateiDialogStruktur As DateiDialogStruktur) As Long
...