Avatar billede Klaus W Ekspert
21. september 2020 - 10:05 Der er 11 kommentarer og
1 løsning

VBA kode/Function driller

Hej jeg bruger denne VBA-kode til at import Excel ark med dialogboks. Den første del fungerer rigtig godt sammen med den første Funktion. Men når jeg vil sætter anden Funktion ind. Kan Excel sagtens åbner en dialogboks, hvor jeg kan vælge den mappe Excel importere arkene fra. Men Excel importerer ikke arkene.
Jeg vil være taknemlig for al hjælp.
Jeg tillader mig at sende et link til Dropbox. https://www.dropbox.com/sh/n0buw8nnkweuaho/AACbjsOqGRBSXtVg9dTg3jBya?dl=0
Hilsen Klaus W
VBA-kode er.
Sub Rektangelafrundedehjørner1_Klik()
Dim ws As Worksheet
  Dim Wbk As Workbook
  Dim Pth As String, Fname As String
      Pth = GetFolder()
  Fname = Dir(Pth & "*.xlsm")
  Do While Fname <> ""
      Set Wbk = Workbooks.Open(Pth & Fname)
      For Each ws In Wbk.Worksheets
        If Not ShtExists(ws.Name, ThisWorkbook) Then
            ws.Copy , ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        End If
      Next ws
      Wbk.Close False
      Fname = Dir
  Loop
End Sub

Første Funktion er.
Public Function ShtExists(ShtName As String, Optional Wbk As Workbook) As Boolean
    If Wbk Is Nothing Then Set Wbk = ActiveWorkbook
    On Error Resume Next
    ShtExists = (LCase(Wbk.Sheets(ShtName).Name) = LCase(ShtName))
    On Error GoTo 0
End Function

Anden Funktion er
Function GetFolder() As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
dlg.InitialFileName = "c:\"
If dlg.Show = -1 Then
GetFolder = dlg.SelectedItems(1)
End If
End Function
Avatar billede terry Ekspert
21. september 2020 - 12:14 #1
Try this

With dlg

    .InitialFileName = "c:\"
    .Show
    GetFolder = .SelectedItems(1)
   
End With
Avatar billede Klaus W Ekspert
21. september 2020 - 12:43 #2
Tak men jeg for det ikke til at funger
KW
Har du et andet forslag

Jeg har sat den ind sådan
Function GetFolder() As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
'dlg.InitialFileName = "c:\"
'If dlg.Show = -1 Then
'GetFolder = dlg.SelectedItems(1)
'End If
With dlg

    .InitialFileName = "c:\"
    .Show
    GetFolder = .SelectedItems(1)
 
End With

End Function
Avatar billede terry Ekspert
21. september 2020 - 12:59 #3
Does the GetFolder function work now?
If so then you obvioulsy have other problems in your code
Avatar billede terry Ekspert
21. september 2020 - 13:56 #4
you should try debugging your code, there is at least one more error...

Fname = Dir(Pth & "\*.xlsm")
Avatar billede Klaus W Ekspert
21. september 2020 - 14:24 #5
Yes the GetFolder function work an open a folder but do not import the xlsm files
If I inset Fname = Dir(Pth & "\*.xlsm") instead of Fname = Dir(Pth & "*.xlsm") I got an error in  Set Wbk = Workbooks.Open(Pth & Fname)
Avatar billede terry Ekspert
21. september 2020 - 14:41 #6
Set Wbk = Workbooks.Open(Pth & "\" & Fname)
Avatar billede terry Ekspert
21. september 2020 - 14:41 #7
I hope you can see what the error is?
Avatar billede terry Ekspert
21. september 2020 - 14:42 #8
and I'm OK with danish ;-)
Avatar billede Klaus W Ekspert
21. september 2020 - 14:53 #9
Hej Terry jeg prøver det og endt til videre tak
Avatar billede terry Ekspert
21. september 2020 - 14:58 #10
rest of the code should work ;-)
Avatar billede Klaus W Ekspert
21. september 2020 - 16:38 #11
Hej igen Terry, det ser ud som om det virker 1000 tak for hjælpen.

Mange hilsener Klaus W
Avatar billede terry Ekspert
21. september 2020 - 16:54 #12
Great :-)
BR Terry
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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