Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arbeitsmappe schließen

Arbeitsmappe schließen
Michael
Hallo,
ich komme nicht drauf ...
Ich habe einen Ordner in dem es eine Menge xls gibt die VBA-Code enthalten, der passwortgeschützt ist. Nun brauche ich die Dateien (bzw. jeweils ein Blatt daraus) unbedingt ohne Code.
Ich habe mir gedacht alle Dateien aus einer Mappe heraus automatisch nacheinander zu öffnen und das entscheidende Blatt in eine neue Arbeitsmappe zu kopieren. Die 'überflüssigen' xls will ich später manuell löschen.
So sieht mein Code aus:
StrVerzeichnis = ActiveWorkbook.Path & "\"
StrTyp = "*.xls"
StrDateiname = Dir(StrVerzeichnis & "\" & StrTyp)
Do While StrDateiname ""
Workbooks.Open Filename:=StrVerzeichnis & StrDateiname
Application.DisplayAlerts = False
For Each WS In ActiveWorkbook.Sheets
If WS.Name = "Aktuelle Rechnung" Then
NeuerName = StrVerzeichnis & "_neu" & StrDateiname
Sheets("Aktuelle Rechnung").Copy
With ActiveWorkbook
.SaveAs Filename:=NeuerName
.Close
End With
End If
Next WS
ActiveWorkbook.Close False
StrDateiname = Dir
Loop
Das Kopieren der Blätter in neue Arbeitsmappen und schließen derselben funktioniert auch ... aber ich kann die Arbeitsmappe aus der das Blatt kopiert wird nicht schließen ("ActiveWorkbook.Close False" führt zu "Index außerhalb des gültigen Bereichs" und alle anderen Versuche haben auch nicht funktioniert).
Hat jemand von Euch eine Idee?
Danke und Grüße,
Michael
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Arbeitsmappe schließen
13.02.2010 00:57:55
Josef
Hallo Michael,

woher der Fehler kommt, kann ich nicht sagen, ich würde aber sauber referenzieren, dann sollte es laufen.

Sub copySheetToWb()
  Dim objWb As Workbook, WS As Worksheet
  Dim strVerzeichnis As String, strTyp As String, strDateiname As String
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .EnableEvents = False
    .ScreenUpdating = False
    .DisplayAlerts = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
  End With
  
  strVerzeichnis = ActiveWorkbook.Path & "\"
  strTyp = "*.xls"
  strDateiname = Dir(strVerzeichnis & "\" & strTyp)
  
  Do While strDateiname <> ""
    Set objWb = Workbooks.Open(Filename:=strVerzeichnis & strDateiname)
    For Each WS In objWb.Sheets
      If WS.Name = "Aktuelle Rechnung" Then
        WS.Copy
        With ActiveWorkbook
          .SaveAs Filename:=strVerzeichnis & "_neu" & strDateiname
          .Close
        End With
        Exit For
      End If
    Next
    objWb.Close False
    strDateiname = Dir
  Loop
  
  
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (copySheetToWb) in Modul Modul3", _
      vbExclamation, "Fehler in Modul3 / copySheetToWb"
  End With
  
  With Application
    .EnableEvents = True
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Calculation = lngCalc
  End With
  
  Set objWb = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Arbeitsmappe schließen
13.02.2010 17:22:05
Michael
Hallo Sepp,
Dein Code funktioniert einwandfrei!
Danke und Grüße,
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige