Avatar billede hlnviv Juniormester
12. august 2022 - 10:58 Der er 5 kommentarer og
1 løsning

Åben Dialog boks til import af txt filer

Hej
Jeg har opdateret Access fra 32 til 64 bit, efter den er opdateret virker min code til at åben en dialog boks  ikke mere. Den skriver bare "manglende fil" den åbner ikke en dialog boks så jeg kan vælge en fil ?

Sådan ser mit modul ud har indsat "PtrSafe" efter opdatering

Option Compare Database

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Const SW_HIDE = 0
Public Const SW_SHOW = 1

Sådan ser min knap kode ud
rivate Sub Kommandoknap103_Click()

Dim sti As String
sti = LaunchCD(Me)
DoCmd.TransferText acImportDelim, "Højspænding", "HØJSPÆNDING", sti
Me.Requery

End Sub

Håber i forstå mit spørgsmål
vh Heine
Avatar billede Gustav Ekspert
12. august 2022 - 11:12 #1
Vi kunne forsøge at gætte indholdet af LaunchCD, men hvorfor ikke poste koden?
Avatar billede hlnviv Juniormester
12. august 2022 - 11:29 #2
Option Compare Database

Option Explicit
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
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
Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.hwnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\Billede"
OpenFile.lpstrTitle = "Vælg en fil og tryk på Åbn."
OpenFile.Flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "Manglende fil!", vbInformation, _
"Du har ikke valgt en fil fra Stifinderen."
Else
LaunchCD = Trim(OpenFile.lpstrFile)
End If
End Function
Avatar billede hlnviv Juniormester
12. august 2022 - 11:31 #3
Jeg er ikke super god til at forstå koderne, har får hjælp som nu 😊 så jeg ved ikke lige helt hvor jeg ska rette til 😬 ?
Avatar billede hlnviv Juniormester
12. august 2022 - 11:35 #4
skal nok have rettet fil navne fra 32 bit til 64 bit men hvad skal de hedde ?
Avatar billede Gustav Ekspert
12. august 2022 - 16:18 #5
Du mangler nogle LongPtr og en LenB:
Option Compare Database
Option Explicit

Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
    lStructSize        As Long
    hwndOwner          As LongPtr
    hInstance          As LongPtr
    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 LongPtr
    lpTemplateName      As String
End Type

Function LaunchCD(Form As Form) As String

    Dim OpenFile    As OPENFILENAME
    Dim lReturn    As Long
    Dim sFilter    As String
   
    sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
        "JPG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
   
    OpenFile.lStructSize = LenB(OpenFile)
    OpenFile.hwndOwner = Form.Hwnd
    OpenFile.lpstrFilter = sFilter
    OpenFile.nFilterIndex = 1
    OpenFile.lpstrFile = String(257, 0)
    OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
    OpenFile.lpstrFileTitle = OpenFile.lpstrFile
    OpenFile.nMaxFileTitle = OpenFile.nMaxFile
    OpenFile.lpstrInitialDir = "C:\Billede"
    OpenFile.lpstrTitle = "Vælg en fil og tryk på Åbn."
    OpenFile.Flags = 0
    lReturn = GetOpenFileName(OpenFile)
    If lReturn = 0 Then
        MsgBox "Manglende fil!", vbInformation, _
            "Du har ikke valgt en fil fra Stifinderen."
    Else
        LaunchCD = Trim(OpenFile.lpstrFile)
    End If
   
End Function
Avatar billede hlnviv Juniormester
15. august 2022 - 06:31 #6
Så virkede det.. Tak for hjælpen 👍
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester