Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
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
Inhaltsverzeichnis

Excel Laufzeitfehler 1004

Excel Laufzeitfehler 1004
22.11.2013 21:52:43
Sebastian
Hallo zusammen,
vielen Dank für das tolle Forum und die vielen Informationen die ich hier gefunden habe. Das hat mir bisher immer sehr geholfen!
Jetzt komme ich aber zu einem Problem, für das ich bisher noch keine Lösung gefunden habe und hoffe auf Eure Hilfe.
Erstellt habe ich zur automatischen Berechnung von Auslastungs- und Bedarfskennzahlen eine recht aufwendige Arbeitsmappe mit vielen Makros und Berechnungen. Das funktioniert einwandfrei mit allen Funktionen die ich eingebaut habe. Um es aber noch komfortabler zu machen, lasse ich alle Daten die die Datei benötigt nachts über ein vbscribt einlesen. Und jetzt kommt das Problem: solange ich die Datei bei uns im Netzwerk ganz normal öffne und schliesse funktioniert alles. Möchte ich diesen Schritt aber über das Script laufen lassen, kommt die Fehlermeldung "Laufzeitfehler 1004" die Zelle ist geschützt...
Die Zelle ist aber nicht geschützt, Blattschutz wird vorher über ein Makro aufgehoben. An der Stelle an der Excel stehen bleibt, soll das Änderungsdatum einer externen Textdatei ausgelesen und in das Tabellenblatt eingetragen werden.
Wie gesagt, manuell funktioniert alles prima, über das Script nicht. Kann es sein, dass es mit einer Sicherheitseinstellung von Excel zu tun hat? Zur Sicherheit habe ich den Codeausschnitt beigefügt.
Habt ihr eine Idee? Ich hoffe!
Liebe Grüße,
Sebastian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Laufzeitfehler 1004
22.11.2013 21:54:40
Sebastian
sorry, habe den Code vergessen...
Sub Erstellungsdatum()
Dim fso
Dim dieseDatei
Set fso = CreateObject("Scripting.filesystemobject")
Set dieseDatei = fso.getfile("W:\Operations\Kapazitäten Goettingen\rest.txt")
Worksheets("Arbeitstage pro KW & Daten").Range("B53") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile("W:\Operations\Kapazitäten Goettingen\semi.txt")
Worksheets("Arbeitstage pro KW & Daten").Range("B54") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile("W:\Operations\Kapazitäten Goettingen\td41.txt")
Worksheets("Arbeitstage pro KW & Daten").Range("B55") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile("W:\Operations\Kapazitäten Goettingen\td41vormonat.txt")
Worksheets("Arbeitstage pro KW & Daten").Range("B56") = dieseDatei.datelastmodified
End Sub

Anzeige
Excel Laufzeitfehler 1004 bei Start per vbs-Script
23.11.2013 01:35:57
fcs
Hallo Sebastian,
ich mal ein wenig mit einem vbs-Script experimentiert.
Mögliche Ursachen für Fehler:
1.) Ereignismakros, die beim Öffnen der Datei ausgeführt werden, oder andere störende Ereignismakros.
Hier müssen im vbs-Script für Excel die Ereignismakros deaktiviert werden.
2.) Irgendwelche Verweise auf Objekte, die beim öffnen der Datei via vbs-Script nicht korrekt gesetzt werden.
Hier hilft nur konsequent die Objekte zu referenzieren und mit ThisWorkbook zu arbeiten, damit es passt.
Sicherheitseinstellungen sollten eigentlich ähnlich wie im Handbetrieb ablaufen. Aber wenn das der Fall wäre, dann sollte das Makro vom Script ggf. gar nicht ausgeführt werden können.
ggf. schadet es nicht, wenn du die unter den Optionen von Excel im Sicherheitscenter die Ordner mit den betreffenden Excel und Textdateien als vertrauenswürde Verzeichnisse einrichten.
Nachfolgend die Makros mit denen ich getestet habe.
Gruß
Franz
'vbs-Script zum Öffnen einer Excel-Datei und Start eines Makros
On Error Resume Next
Dim objAppXl,xlWkb, strFile
'Wenn die Excelanwendung geöffnet ist, dann wird diese verwendet
Set objAppExcel = GetObject(,"Excel.Application")
If Err.Number  0 Then
''    MsgBox "Excel läuft nicht!"
'Excel starten'
Set objAppExcel = CreateObject("Excel.Application")
err.clear
End if
'Excel-Anwendungsfenster sichtber anzeigen'
objAppExcel.Visible = True
'Ereignsmakros deaktivieren
objAppExcel.EnableEvents = False
'Datei öffnen'
strFile="Test Datei.xlsm"
set xlWkb = objAppExcel.Workbooks(strFile)
if xlwkb is nothing then
Set xlWkb = objAppExcel.Workbooks.Open("W:\Operations\" & strFile)
'Update-Makro starten'
objAppExcel.run "'" & xlWkb.Name & "'!prcOverNightUpdate"
else
msgbox "Die Datei """ & strfile & """ ist bereits geöffnet!",,"FileUpdate.vbs"
end if
'Code in einem allgemeinen Modul der Excel-Datei
Option Explicit
Sub prcOverNightUpdate()
'Dieses Makro wird vom Visualbasic-Script nachts gestartet
'MsgBox "Makro ""prcOverNightUpdate"" wurde gestartet"
Call prcAktion1
ThisWorkbook.Save
Application.Quit
End Sub
Sub prcAktion1()
With ThisWorkbook.Worksheets("Arbeitstage pro KW & Daten")
.Unprotect
Call Erstellungsdatum
.Protect
End With
End Sub
Sub Erstellungsdatum()
Dim fso
Dim dieseDatei
Dim strFolder As String
strFolder = "W:\Operations\Kapazitäten Goettingen\"
With ThisWorkbook.Worksheets("Arbeitstage pro KW & Daten")
Set fso = CreateObject("Scripting.filesystemobject")
Set dieseDatei = fso.getfile(strFolder & "rest.txt")
.Range("B53") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile(strFolder & "semi.txt")
.Range("B54") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile(strFolder & "td41.txt")
.Range("B55") = dieseDatei.datelastmodified
Set dieseDatei = fso.getfile(strFolder & "td41vormonat.txt")
.Range("B56") = dieseDatei.datelastmodified
End With
End Sub

Anzeige
OT: VBS=VBScript! orT
23.11.2013 13:54:17
Luc:-?
Oller Tautologe! ;-)
Gruß+schöWE Luc :-?

AW: Excel Laufzeitfehler 1004
23.11.2013 01:50:03
Erich
Hi Sebastian,
die fso-Nutzung dürfte hier überhaupt keine Rolle spielen.
Probier doch mal die vereinfachte Prozedur

Sub Erstellungsdatum()
Worksheets("Arbeitstage pro KW & Daten").Range("B53") = 4711
End Sub
Spannender finde ich hier andere Fragen:
- Wie lautet die Fehlermeldung genau?
- Wozu - zu welcher Mappe - gehört das Tabellenblatt 'Arbeitstage pro KW & Daten'?
- Wird die Mappe, in die geschrieben werden soll, schreibgeschützt geöffnet? (Fenstername?)
- Wo steht der Code? (In welcher Mappe? Normales Modul oder Klassenmodul einer Tabelle?)
- Welche Mappe/welches Blatt ist zur Ausführungszeit gerade aktiv?
- Was für ein Makro tut das hier: "Blattschutz wird vorher über ein Makro aufgehoben"? Sicher?
- Kannst du direkt nach Auftreten des 1004-Fehlers und Abbruch der Prozedur Zelle B53 manuell ändern?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Excel Laufzeitfehler 1004
24.11.2013 22:08:48
Sebastian
Hallo zusammen,
vielen Dank zunächst einmal für Eure Antworten, ich bin aber noch nicht weiter gekommen. Komme auch erst jetzt dazu überhaupt etwas zu arbeiten.
Ich vermute ich habe mich nicht wirklich gut ausgedrückt. Wenn meine Exceldatei geschlossen wird, laufen in der Arbeitsmappe (before close) einige Makros ab. Unter anderem eben auch der obige Code. Das VBScript wird nachts auf unserem Server gestartet und soll eigentlich nur die Datei laufen lassen, damit sich die Makros ausführen.
Das Script lautet so:
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Visible = True
datei = "Laufwerk- und Dateiname"
Set objWb = objXL.Workbooks.Open(datei)
wscript.sleep 10000
objWb.Close save = false
objXL.Quit
Set objDialog = Nothing
Set objXL = Nothing
WScript.Quit
Wenn das Script startet, läuft eben alles bis zu der Stelle, an der das Script die Datei schliesst. Die Fehlermeldung in Excel lautet dann:
Laufzeitfehler '1004'
Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten, ist schreibgeschützt.
Sie können ein geschütztes Diagramm oder eine geschützte Zelle ändern, indem Sie zuerst den Schutz mit dem Befehle 'Blattschutz aufheben' entfernen (Registerkarte 'Überprüfen', Gruppe 'Änderungen'). Möglicherweise werden Sie nach einem Kennwort gefragt.
Bevor ich aber das Erstellungsdatum aufrufe, wird der Blattschutz aller Blätter der Arbeitsmappe aufgehoben. Das scheint aber nicht zu wirken. Den Blattschutz hebe ich bei (before close) mit folgendem Befehl auf:
Dim s
Dim Name As Variant
Name = ActiveSheet.Name
Application.ScreenUpdating = False
For s = 1 To Sheets.Count
Sheets(s).Select
ActiveSheet.Unprotect Password:="geheim"
Next s
Sheets(Name).Select
Application.ScreenUpdating = True
End Sub
Wenn ich die entsprechenden Zellen in der Tabelle aus dem Schutz rausnehme, geht es. Der Schutz wird irgendwie nicht aufgehoben...
Das ändert jetzt wahrscheinlich die Situation... könnt Ihr es trotzdem noch einmal versuchen?
Vielen lieben Dank,
Sebastian

Anzeige
AW: Excel Laufzeitfehler 1004
25.11.2013 09:39:10
Sebastian
Hallo,
irgendwie ist der Beitrag wohl im Archiv gelandet... hoffe noch auf Hilfe!
LG und einen guten Wochenstart

AW: Excel Laufzeitfehler 1004
25.11.2013 10:32:48
Sebastian
Hallo zusammen,
Problem gelöst! ;-)
Aus irgendeinem Grund löst die Arbeitsmappe per Makro den Blattschutz nicht auf. Allerdings nur, wenn die Excel Mappe über das VBScript geöffnet wird. Habe jetzt das Aufeheben des Blattschutzes in das VBScript übergeben und jetzt geht es fehlerfrei. Muss MANN nicht verstehen, oder?
Trotzdem vielen Dank für Eure Gedanken.
LG Sebastian

warum offen? - ... und zu (owT) :-)
25.11.2013 17:19:10
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige