.close gibt mir dimensionsfehler wieso?

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    .close gibt mir dimensionsfehler wieso?

    Hallo Leute,

    habe ein mehr oder weniger kleines Problem mit dem .Close Event in diesem Fall.
    Es zeigt mir einen Laufzeitfehler '-2147352571 an mit der Meldung " Die angegebene Dimension ist ungültig für den Diagrammtyp".

    Meine Frage wieso funktioniert das .Close Statement nicht so wie es aus kommentiert da steht (Zeile 45), zumal das .open Statement (davor) mit sfile dahinter normal funktioniert. ?(

    Quellcode

    1. Option Explicit
    2. Sub lese_onepager()
    3. Dim wb_anfang As Workbook
    4. Dim ws_anfang As Worksheet
    5. Dim x As Long
    6. Dim sfile As Object
    7. Dim folder As folder
    8. Dim sfolderpath As folder
    9. Dim ordner_pfad As String
    10. Dim bFolderExists As Boolean
    11. Set wb_anfang = ThisWorkbook
    12. Set ws_anfang = wb_anfang.Worksheets("Hilfstabelle")
    13. ordner_pfad = "hiersinddieordner"
    14. bFolderExists = oFSO.FolderExists(ordner_pfad)
    15. Set sfolderpath = oFSO.GetFolder(ordner_pfad)
    16. 'Set folder = oFSO.GetFolder(sfolderpath)
    17. 'Set datei_name = oFSO.GetFileName
    18. 'Set erkenne_datei = oFSO.GetFile
    19. For x = 50 To 70
    20. If Not (IsEmpty(ws_anfang.Cells(x, 2))) = True Then
    21. 'ws_anfang.Cells(x, 2).value
    22. If bFolderExists = True Then
    23. MsgBox ("Der Ausleseordner ist vorhanden, Ordner und Dateien werden nun ausgelesen.")
    24. 'ab hier probleme
    25. For Each folder In sfolderpath.SubFolders
    26. If folder.name Like ws_anfang.Cells(x, 2).value & "*" Then
    27. For Each sfile In folder.Files
    28. If sfile.name Like ws_anfang.Cells(x, 2).value & "*" & "Blabla" & "*" & ".xls*" Then
    29. Workbooks.Open sfile
    30. Worksheets("test").Copy before:=wb_anfang.Worksheets("Sonstiges")
    31. Worksheets("test").name = "test" & " " & ws_anfang.Cells(x, 2).value
    32. 'Workbooks(sfile).Close
    33. End If
    34. 'for each erkenne_datei in folder
    35. 'if datei_name = ws_anfang.Cells(x, 2).value & "*" then
    36. 'erkenne_datei.open
    37. 'tabelle("test).copy ws_anfang
    38. Next
    39. End If
    40. Next
    41. End If
    42. End If
    43. Next x
    44. End Sub

    Der Index einer Collection ist sozusagen seine Position. Das 1. Workbook hat den Index 1. (Üblicherweise fangen Array und Collection bei 0 an. Aber es ist halt VBA)

    Und die Open Methode erwartet halt den vollen Pfad, sonst könnte man das Workbook ja nicht eindeutig finden.
    Aber die Workbooks collection enthält auch Workbooks die noch nicht gespeichert sind. Diese haben dann keinen Pfad sondern das heißt dann zB einfach Book1 oder Mappe1.
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mono“ ()

    Sei vorsichtig beim Index. Wenn du ein weiteres Workbook offen hast, dann ist der Index ggf. nicht mehr korrekt.

    Wenn du es vorher öffnest ist die beste Variante, dass geöffnete Workbook Objekt selber zu verwenden:

    Visual Basic-Quellcode

    1. dim wb as Workbook
    2. set wb = Workbooks.Open sfile
    3. 'tu was damit
    4. wb.Close XlSaveAction.xlDoNotSaveChanges
    Das ist meine Signatur und sie wird wunderbar sein!
    @Mono

    stimmt, das hatte ich nicht bedacht wobei das im Regelfall funktionieren sollte.
    Dennoch sollte da was zur Sicherheit geändert werden, jedoch funktioniert das nicht ganz wie du es verfasst hast.

    Er meckert in der set Zeile, da sfile nicht einfach so daneben stehen darf. Hierzu eine Alternativlösung?

    @Mono

    hab die Lösung für das Problem und zwar mit der Workbooks.Count Methode, da wird automatisch immer das zuletzt geöffnete geschlossen und in dem Fall wird ja sozusagen immer ein neues Workbook zum rauskopieren gesucht/geöffnet und somit passt das dann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dani02“ ()