Anzeige
Archiv - Navigation
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei schließen über VBA / Hilfe bei Code

Datei schließen über VBA / Hilfe bei Code
17.08.2005 12:19:15
Torsten K.
Hallo beisammen,
eine Datei ("Blanco_INVBU.xls")/("wb1") möchte ich unter anderem Namen ("IT_Budget_2005.xls")/("wb2") speichern, diese Kopie dann öffnen, einige WS löschen, überflüssigen VBA-Code und Buttons löschen, als Mail-Anhang direkt aus Excel versenden, wieder schließen und dann die Kopie wieder löschen. Mit folgendem Code habe ich das meiste bereits realisiert. Nur das Schließen der Kopie schlägt jedesmal Fehl:

Private Sub cmb_SEND_Click()
If Sheets("ENTBUDIT").Range("G7").Value = "" Then
If MsgBox("Soll die Datei jetzt gesendet werden?", vbYesNo) = vbYes Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wb1 As Workbook
Dim wb2 As Workbook
Set wb1 = ThisWorkbook
ThisWorkbook.SaveCopyAs "C:\Dokumente und Einstellungen\IT_Budget_2005.xls"
' *** Hier wird IT_Budget_2005.xls zum ActiveWorkbook !!!
Workbooks.Open "C:\Dokumente und Einstellungen\IT_Budget_2005.xls"
' *** Es werden Makros beim Öffnen der Datei gestartet.
' *** Diese müssen zunächst beendet werden !
Set wb2 = Workbooks("IT_Budget_2005.xls")
wb2.RunAutoMacros xlAutoClose
wb2.Sheets("ENTBUDIT").Unprotect Password:="maze"
With wb2.Sheets("ENTBUDIT").Range("C1:D5")
.Copy
.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
With wb2
.Sheets("START").Delete
.Sheets("ENTBUD").Delete
.Sheets("ENTNONBUD").Delete
.Sheets("PROTOC").Delete
End With
Application.DisplayAlerts = True
Dim wks As Worksheet
Dim cb As Object
With Sheets("ENTBUDIT")
.Unprotect Password:="maze"
.Activate
End With
Set wks = ActiveSheet
'Löschen des Codes aus "Diese Arbeitsmappe"
With wb2.VBProject
With .VBComponents("DieseArbeitsmappe").CodeModule
.DeleteLines 1, .CountOfLines
End With
End With
'Löschen des VBA-Codes aus dem aktiven WS
With wb2.VBProject _
.VBComponents(wks.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
'Löschen aller cmb_Buttons im aktiven WS
For Each cb In wks.OLEObjects
If TypeName(cb.Object) = "CommandButton" Then
cb.Delete
End If
Next cb
'Löscht Module im aktiven WB
With wb2.VBProject
.VBComponents.Remove .VBComponents("Modul1")
.VBComponents.Remove .VBComponents("Modul3")
End With
wb2.Sheets("ENTBUDIT").Protect Password:="maze"
wb2.Sheets("ENTBUDIT").Range("A1").Select
wb2.Save
Dim dummy As Variant
Dim irow As Integer
dummy = SendNotesMail("IT_Bedarf 2005 / " & Sheets("ENTBUDIT").Range("C5").Value _
& " / " & Sheets("ENTBUDIT").Range("C4").Value, _
"C:\Dokumente und Einstellungen\IT_Budget_2005.xls", "tkreuer@grundfos.de", "", True)
wb2.Save
' Umschalten auf das ursprüngliche Workbook
wb1.Activate
' Löschen der temporären Datei
Application.DisplayAlerts = False
wb2.Close
Kill "C:\Dokumente und Einstellungen\IT_Budget_2005.xls"
End Sub

Excel steigt an der Stelle "wb2.Close" aus mit folgendem Fehler:
"Laufzeitfehler 9: Index außerhalb des gültigen Bereichs". Dann wird Excel komplett geschlossen. Wenn ich dann die Datei im Anschluß wieder öffnen möchte, erhalte ich den Hinweis, daß diese bereits geöffnet sei. Ich muß den rechner also komplett runter- und dann wieder rauffahren, um an meine Datei zu kommen.
Was mache denn hier noch falsch?
Für Eure Hilfe im voraus besten Dank.
Gruß
Torsten

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei schließen über VBA / Hilfe bei Code
17.08.2005 13:13:15
Harald E
Hi Torsten,
vorweg. Keine Ahnung wo da ein Fehler liegt.
Deshalb nur ein Einzeiler, wie er bei mir im Einsatz ist.
Statt wb2.close
Workbooks("IT_Budget_2005.xls").Close False
Gruß
Harald
AW: Datei schließen über VBA / Hilfe bei Code
17.08.2005 13:21:47
Torsten K.
Hallo Harald,
vielen Dank für Deine Rückmeldung.
Aber das war's leider auch nicht.
Gruß
Torsten
AW: Datei schließen über VBA / Hilfe bei Code
17.08.2005 13:32:44
Harald E
Ahja...und noch ein Schuss ;-))
wb2.activate
activewindow.close false
AW: Datei schließen über VBA / Hilfe bei Code
17.08.2005 13:39:13
Torsten K.
Hallo Harald,
sory.....
"Die Methode 'Close' für das Object 'Window' ist fehlgeschlagen"
Gruß
Torsten
AW: erledigt - mT
17.08.2005 15:25:33
Torsten K.
Hallo beisammen,
mit dem Ändern der Zeilen:
...
With wb2
.Sheets("START").Delete
.Sheets("ENTBUD").Delete
.Sheets("ENTNONBUD").Delete
.Sheets("PROTOC").Delete
End With
...
auf .Visible = xlVeryHidden, läuft der Code jetzt durch. Ich kann's zwar nicht erklären,
aber hauptsache, ich komme weiter.
Gruß
Torsten
Anzeige

156 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige