Tanelorn.net
Medien & Phantastik => Multimedia => Multimedia - Software & Betriebsysteme => Thema gestartet von: Ludovico am 2.06.2008 | 09:21
-
Moinsen!
Ich sitze nun seit über einer Woche an einem Problem, bei dem mir das Internet auch nicht weiterhelfen konnte.
Ich habe ein paar Excel-Tabellen programmiert und diese mittels Makro verknüpft (also daß sie via Klick auf Button geöffnet werden).
Bei mir funktioniert alles reibungslos, aber ein Kollege (der die gleichen Zugangsberechtigungen wie ich hat) erhält ständig folgende Meldung:
'Laufzeitfehler 1004
Die Methode 'Open' für das Objekt 'Workbooks' ist fehlgeschlagen'
Wodurch kann das zustande kommen?
-
moin,
ganz blöd, hat er die gleiche Excel-Version wie du? (Programmiere auch recht viel mit Makros in Excel)
Wie schaut es bei noch anderen Kollegen aus?
Passiert das gleiche, wenn du die Syntax/die gleiche Prozedur in eine andere Datei packst? (hab es auch schon gehabt, dass die Datei irgendwie korrupt war)
-
moin,
ganz blöd, hat er die gleiche Excel-Version wie du? (Programmiere auch recht viel mit Makros in Excel)
Wie schaut es bei noch anderen Kollegen aus?
Passiert das gleiche, wenn du die Syntax/die gleiche Prozedur in eine andere Datei packst? (hab es auch schon gehabt, dass die Datei irgendwie korrupt war)
Es ist in der Firma und wir haben alle die gleiche Excel-Version. Ein anderer Kollege kam komischerweise weiter, wobei ich da erst ab halb 2 bescheid geben kann, da ich dann ein Meeting mit dem Mann habe... der hat aber auch einen Fehler gefunden.
Alle Dateien befinden sich übrigens im Intranet, aber jeder der Genannten hat Schreib- und Leseberechtigung.
Edit: Hab mit dem Makro wie erwartet auch beim Weiterkopieren bei mir keine Probleme festgestellt.
-
Versuch doch mal die Dateien lokal bei den Leuten zu starten und nicht übers Intranet. Dann kannst du wenigstens schonmal ausschliessen ob es sich um einen Fehler in der Datei oder im Netz handelt.
-
Werd ich machen. Danke!
-
Hallo!
Es liegt nicht am Intranet. Mein Kollege bekam exakt die gleiche Meldung, als er nach Anpassung der Links etc., es auf seinem Rechner auf der Festplatte versucht hat.
Hier sind die beiden Makros, die mir Ärger verursachen (Dateinamen geändert):
Sub MonthSelection()
'
' MonthSelection Macro
' Macro recorded 2008-05-22 by Oliver
'
'Open Summary 2008
Workbooks.Open Filename:="C:\Facility Data\Data Output\Summary 2008.xls"
End Sub
und
Sub DataEntryGo()
'
' DataEntryGo Macro
' Macro recorded 2008-05-22 by Oliver
'
'Select workbook based on entry in B19
Select Case Range("B19").Text
'If Br is chosen in B19 then open "Draft Br.xls"
Case "Br"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft Br.xls"
Sheets("Summary").Select
Range("B1").Select
'If Ch is chosen in B19 then open "Draft Ch.xls"
Case "Ch"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft Ch.xls"
Sheets("Summary").Select
Range("B1").Select
'If De is chosen in B19 then open "Draft De.xls"
Case "De"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft De.xls"
Sheets("Summary").Select
Range("B1").Select
'If Fr is chosen in B19 then open "Draft Fr.xls"
Case "Fr"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft Fr.xls"
Sheets("Summary").Select
Range("B1").Select
'If In is chosen in B19 then open "Draft In.xls"
Case "In"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft In.xls"
Sheets("Summary").Select
Range("B1").Select
'If Mx is chosen in B19 then open "Draft Mx.xls"
Case "Mx"
Workbooks.Open Filename:="C:\Facility Data\Data Entry\Draft Mx.xls"
Sheets("Summary").Select
Range("B1").Select
'If nothing is chosen or something not in the list is typed in B19 then go back to B19
Case Else
Range("B19").Select
End Select
End Sub
-
also im Programmcode kann ich absolut keinen Fehler entdecken, habe aber auch kurz ein wenig herumgegoogelt.
Jemand hatte ein ähnliches Problem mit einem vergleichsweise ähnl. einfachen Code. Sein Problem war (und nach dessen Änderung war das Problem gelöst) die eingebauten Select/Case-Anweisungen.
Wüsste zwar nicht warum gerade diese das Problem verursachen, aber ... naja...
Programmiere stattdessen doch einfach ein paar IF-Abfragen ein. Ist ja nicht soo der Umstand.
-
@Jan
Danke, aber ich glaube, Case kann nicht der Verursacher sein, denn das erste Makro hat genau das gleiche Problem und da drin befindet sich keine Abfrage (werd es aber dennoch versuchen).
Der Debugger markiert auch direkt immer die Zeile
Workbooks.Open Filename:="C:\Facility Data\Data Output\Summary 2008.xls"
Zur Erklärung:
Die Makros befinden sich in einer Arbeitsmappe, die ich als Benutzermaske verwende.
Das erste leitet einen nach Eingabe eines Monats (Auswahl anhand einer Liste) zu einer Arbeitsmappe weiter, die für die Datenausgabe zuständig ist (hier Summary 2008.xls).
Das andere Makro leitet einen nach Eingabe eines Namens (Auswahl anhand einer Liste) weiter zum entsprechenden Eingabeblatt.
Die Weiterleitung wird in beiden Fällen mit einem Button aktiviert.
Und genau hier bekommt mein Kollege immer diesen Laufzeitfehler.
-
VBA ist ja nun ein recht merkwürdige Sprache... Hast Du schon einmal den Aufruf etwas variiert?
Ich würde ja ruhig einmal versuchen
Application.Workbooks.open "C:\Facility Data\Data Output\Summary 2008.xls"
u.ä.
VBA ist da oft nicht so vorhersehbar.
Grüße
kirilow
edit:code fixed
-
Richtig, deshalb die Idee mit den IF-Anweisungen. Theoretisch KANN es dir auch passieren, dass, wenn du den Code einmal gänzlich neu eingeben würdest, das Programm funktionieren könnte.
-
steht oben in dem Script Option Explicit ? wenn nicht, dann schreibs mal rein und versuchs nochmal.
-
Danke für die Tips!
Ich probier es dann erstmal.
-
gibt es eine Syntaxhilfe für die Methode Open? es kann ja auch sein, dass Excel ein ganz komisches Pfadformat da erwartet, so was wie file:///C:/Facility Data/Data Output/Summary 2008.xls
...okay, es würde nicht erklären, warum es mal funktioniert und mal nicht.... ich denke auch nicht, dass die Pfadangaben case-sensitiv sind.
-
Hey danke! Läuft nun alles super. Es war wahrscheinlich das fehlende Option Explicit.
-
Hey danke! Läuft nun alles super. Es war wahrscheinlich das fehlende Option Explicit.
Super.
Wen´s interessiert:
[Klugscheißmodus]Option Explicit sorgt dafür, das Lokale Variablen explizit deklariert werden müssen. Da VB von MS ist, und MS das denken lieber dem Computer überlässt als dem Menschen ist es nämlich standardmäßig so, das der Compiler sich selbst überlegt ob du mit Workbooks jetzt die Globale Variable/Objekt meinst, oder ob er nicht doch lieber eine eigene erzeugen soll.
Die beiden PCs, der auf dem es funzte und der auf dem es nicht funzte, waren hier halt verschiedener Meinung....
[/Klugscheißmodus]
Krank oder? Willkürliche Entscheidungen sind schon ziemlich hohes KI-Level :ctlu: ;)
-
*eiskalt den rücken runterläuft* wuah... pfui... *entgeistert gug*
ps sry für OT... aber... pfui...
-
Oh Mist!
Jetzt hab ich den Kram ins intranet gestellt, alle Makros mit Option Explicit versehen und auch die Case durch eine If-Abfrage ersetzt und voilà! Gleicher Fehler! :-X :'(
Das Makro sieht nun so aus:
Option Explicit
Sub DataEntryGo()
'
' DataEntryGo Macro
' Macro recorded 2008-05-22 by Me
'
'Select workbook based on entry in B19
'If BrSA is chosen in B19 then open "Quality Data Br.xls"
If Range("B19").Text = "Br" Then
Application.Workbooks.Open Filename:="http://portal/Quality Data Br.xls"
Sheets("Start").Select
Range("B1").Select
'If ChSA is chosen in B19 then open "Quality Data Cn.xls"
ElseIf Range("B19").Text = ("Cn") Then
Application.Workbooks.Open Filename:="http://portal/Quality Data Cn.xls"
Sheets("Start").Select
Range("B1").Select
'If DeSA is chosen in B19 then open "Quality Data De.xls"
ElseIf Range("B19").Text = ("De") Then
Application.Workbooks.Open Filename:="http://portal/Quality Data De.xls"
Sheets("Start").Select
Range("B1").Select
'If FrSA is chosen in B19 then open "Quality Data Fr.xls"
ElseIf Range("B19").Text = ("Fr") Then
Application.Workbooks.Open Filename:="http://portal/Quality Data Fr.xls"
Sheets("Start").Select
Range("B1").Select
'If InSA is chosen in B19 then open "Quality Data In.xls"
ElseIf Range("B19").Text = ("In") Then
Application.Workbooks.Open Filename:="http://portal/Quality Data In.xls"
Sheets("Start").Select
Range("B1").Select
'If Mx is chosen in B19 then open "Quality Data Mx.xls"
ElseIf Range("B19").Text = ("Mx") Then
Application.Workbooks.Open Filename:="http://portal/Quality Data Mx.xls"
Sheets("Start").Select
Range("B1").Select
'If nothing is chosen or something not in the list is typed in B19 then go back to B19
Else
Range("B19").Select
End If
End Sub
-
Hat sich erledigt! Der Link hat rumgesponnen.