Laufzeitfehler 1004

25/05/2011 - 15:39 von Harald Friis | Report spam
Hallo,

hier lesen und schreiben sicher auch VBA-Kundige. Da hàtte ich mal eine
Frage:

Es gibt in einer Excelliste, die ich von einer externen halbstaatlichen
Stelle bekommen habe, einen VBA-Code. Dieser soll bewirken, dass ein
einzelnes Arbeitsblatt gespeichert werden soll. In diesem Code heißt es:

[Code]
Sub SpeichernAnwesenheit()
Dim sDateiName$, a, b
a = Range("F8").Value
b = Range("F1").Value
Application.ScreenUpdating = False
sDateiName = ThisWorkbook.Path & "\" & Format(b, "000-0000-00 ") &
Format(a, " MMMM YYYY ") & ".xls"
ActiveSheet.Copy
ActiveWorkbook.SaveAs sDateiName
ActiveWorkbook.Close savechanges:=False
MsgBox "Das Blatt wurde unter " & sDateiName & " gespeichert!"
End Sub
[\]

Hier wird, wenn ich das richtig verstehe, ein Makro definiert, der das
Arbeitsblatt unter seinem Namen und aktuellen Datum speichert.
Allerdings kapiere ich die Zusammensetzung des Namens nicht genau.

Mein Windows (XP u. 7) versteht es wohl auch nicht. Es kommt nàmlich
eine Fehlermeldung:

[Fehler]

Laufzeitfehler 1004

Microsoft Excel kann auf die Datei
"C:\Users\Documents\xxx\427\18\[mehrere Ziffern und Buchstaben, wechseln
jeweils] nicht zugreifen.

[\]

Man kann dann 'Beenden' oder 'Debuggen'. Mit Beenden wird das Dokument
erzeugt, heißt aber 'Mappe1'.

Gibt es Ideen, was da im Code möglicherweise falsch ist? Vielen Dank für
Anregungen.

Gruß

Harald Friis
 

Lesen sie die antworten

#1 Claus Busch
25/05/2011 - 16:54 | Warnen spam
Hallo Harald,

Am Wed, 25 May 2011 15:39:23 +0200 schrieb Harald Friis:

Sub SpeichernAnwesenheit()
Dim sDateiName$, a, b
a = Range("F8").Value
b = Range("F1").Value
Application.ScreenUpdating = False
sDateiName = ThisWorkbook.Path & "\" & Format(b, "000-0000-00 ") &
Format(a, " MMMM YYYY ") & ".xls"
ActiveSheet.Copy
ActiveWorkbook.SaveAs sDateiName
ActiveWorkbook.Close savechanges:=False
MsgBox "Das Blatt wurde unter " & sDateiName & " gespeichert!"
End Sub



a und b sind nicht richtig deklariert und werden als Variant angenommen.
Wenn nun F1 und/oder F8 leer sind, kommt es zu diesem Laufzeitfehler.
Entweder deklariere a und b korrekt oder frage zuerst ab, ob die beiden
Zellen befüllt sind.
Der Name setzt sich aus ThisWorkbook.Path, das ist der Ordner aus dem
heraus die Mappe geöffnet wurde und einem Backslash und dann aus dem
Wert aus F8 und dem Datum aus F1 plus Endung zusammen. Auch den Namen
würde ich veràndern, indem du die Leerzeichen herausnimmst oder sie
durch Unterstriche ersetzt.
Probiers mal so:
Sub SpeichernAnwesenheit()
Dim sDateiName As String
Dim a As Date
Dim b As Double
If IsDate([F8]) And IsNumeric([F1]) Then
a = Range("F8").Value
b = Range("F1").Value
sDateiName = ThisWorkbook.Path & "\" & _
Format(b, "000-0000-00_") & _
Format(a, "MMMM YYYY") & ".xls"
ActiveSheet.Copy
ActiveWorkbook.SaveAs sDateiName
ActiveWorkbook.Close savechanges:=False
MsgBox "Das Blatt wurde unter " & sDateiName & " gespeichert!"
Else
MsgBox "Bitte Werte in F1 und F8 korrekt eingeben"
End If
End Sub


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ähnliche fragen