Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro stoppt nach Workbooks.Open Filename:=datei

Forumthread: Makro stoppt nach Workbooks.Open Filename:=datei

Makro stoppt nach Workbooks.Open Filename:=datei
27.01.2005 16:51:12
Marius
Hallo liebe Leute,
habe mein erstes VBA Makro geschrieben, welches soweit auch ganz gut läuft und macht was ich will (auch dank diesem Forum), aber eine Sache bekomm ich nicht gelöst, folgendes Problem:
An einer Stelle im Makro wird eine andere Exceldatei geöffnet
Workbooks.Open Filename:=datei
Die benötigten Werte werden ausgelesen, dann wird die neu geöffnete Datei geschlossen und zur Ausgangsmappe zurückgewechselt
Workbooks(dateiname).Close
Workbooks(aktuell).Activate
Das Problem ist Folgendes, lasse ich das Makro vom VB Script Editor aus laufen, funktioniert alles, wie es soll. Starte ich das Makro von der Datei aus, in welcher es eingebunden ist, bricht es anscheinend nach öffnen von datei ab, liegt das daran, dass die das makro enthaltende ab dem moment des öffnens nicht mehr die aktive ist? Falls dem so sei, wie mach ichs richtig, ich hab echt nüx dazu gefunden, bin für jeden Link oder Hilfestellung dankbar...
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro stoppt nach Workbooks.Open Filename:=datei
harry
hi,
ohne code nicht ganz einfach aber ich schätze mal, du musst beide dateien deklarieren:
dim wbk1, wbk2 as workbook
dann am anfang des makros die aktive datei zuweisen:
set wbk1=activeworkbook
dann nach dem öffnen der 2. date:
set wbk2=activeworkbook
solange beide dateien offen sind, musst du im code immer wbk1 oder wbk2 angeben, z.b.:
wbk1.sheets(1).cells(1,1).value="mist"
wbk2.sheets(1).cells(1,1).value="mist2" ...
dann sollte es eigentlich funktionieren.
liebe grüße,
harry
Anzeige
AW: Makro stoppt nach Workbooks.Open Filename:=datei
27.01.2005 17:35:19
Marius
hmm, nein, hat leider nichts gebracht, hier mal der aktuelle Code:

Sub Test()
' Tastenkombination: Strg+Umschalt+T
'Variablen
Dim wert1 As Long, wert2 As Long, activerow As Integer
'Auswahl der zu uebertragenden Evals
titel1 = "Startwert"
mldg1 = "Geben Sie bitte die KENNUMMER der ERSTEN einzulesenden Evaluation an"
titel2 = "Endwert"
mldg2 = "Geben Sie bitte die KENNUMMER der LETZTEN einzulesenden Evaluation"
wert1 = InputBox(mldg1, titel1, , 100, 100)
wert2 = InputBox(mldg2, titel2, , 100, 100)
'Finden des Speicherpfades
Dim wkb1, wbk2 As Workbook
pfad = ActiveWorkbook.Path & "\"
'aktuell = ActiveWorkbook.Name
Set wbk1 = ActiveWorkbook
aktuell = wbk1.Name
'Finden der ersten freien Zeile (row)
activerow = Cells(Rows.Count, 1).End(xlUp).Row + 1
'Beginn der Schleife für alle Evals
Do While wert1 <= wert2
'Zusammenbau der EvalA Kennnummer
If wert1 > 999 Then Dateiname = "EvalA_" & LTrim(Str(wert1)) & ".xls" Else If wert1 > 99 Then Dateiname = "EvalA_0" & LTrim(Str(wert1)) & ".xls" Else If wert1 > 9 Then Dateiname = "EvalA_00" & LTrim(Str(wert1)) & ".xls" Else: Dateiname = "EvalA_000" & LTrim(Str(wert1)) & ".xls"
datei = pfad & Dateiname
'Auslesen der Werte in EvalA Datei
errmsg = "Die Datei" & Dateiname & "wurde nicht gefunden"
If Dir(datei) <> "" Then Workbooks.Open Filename:=datei: Set wbk2 = ActiveWorkbook Else MsgBox errmsg: GoTo loopbr
site = Cells(11, 2).Value
prodgr = Cells(11, 5).Value
assdate = Cells(14, 1).Value
country = Cells(14, 2).Value
dqsoff = Cells(14, 3).Value
ref = Cells(14, 4).Value
standard = Cells(14, 5).Value
auditor1 = Cells(17, 5).Value
auditor2 = Cells(17, 6).Value
wbk2.Close
'Workbooks(Dateiname).Close
'Eintragen der Werte in Liste der Evals
'Set aktuell = ActiveWorkbook
wbk1.Activate
Cells(activerow, 1) = auditor1
Cells(activerow, 2) = "AL"
Cells(activerow, 3) = site
Cells(activerow, 4) = prodgr
Cells(activerow, 5) = assdate
Cells(activerow, 6) = country
Cells(activerow, 7) = dqsoff
Cells(activerow, 8) = ref
Cells(activerow, 9) = standard
If auditor2 <> "" Then
activerow = activerow + 1
Cells(activerow, 1) = auditor2
Cells(activerow, 2) = "Co"
Cells(activerow, 3) = site
Cells(activerow, 4) = prodgr
Cells(activerow, 5) = assdate
Cells(activerow, 6) = country
Cells(activerow, 7) = dqsoff
Cells(activerow, 8) = ref
Cells(activerow, 9) = standard
End If
activerow = activerow + 1
loopbr:
wert1 = wert1 + 1
Loop
Cells(activerow, 1).Activate
mldg1 = "Die Evaluationswerte wurden der Tabelle hinzugefügt"
titel1 = "Aktion erfolgreich"
MsgBox mldg1, , titel1
End Sub

Anzeige
AW: Makro stoppt nach Workbooks.Open Filename:=dat
27.01.2005 21:39:58
Marius
Nochmal hallo Alle,
ich komme wirklich nicht weiter, höre jetzt einfach erstmal auf, falls Irgendwer einen Geistesblitz hierzu hat, möge er damit meinen Horizont erhellen, bevor ich im farblos schwarzen Meer der Verzweiflung ertrinke ;-)
Bis denne, schönen Abend
Marius
AW: Makro stoppt nach Workbooks.Open Filename:=dat
28.01.2005 00:57:53
Björn
Hallo Marius,
sorry, aber ich konnte dein Problem nicht nachvollziehen.
Es funktionierte alles tadellos.
Gruß
Björn
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Makro stoppt nach Workbooks.Open Filename:=datei


Schritt-für-Schritt-Anleitung

  1. VBA-Umgebung öffnen: Gehe in Excel auf Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen: Wähle im Projekt-Explorer dein Projekt aus, klicke mit der rechten Maustaste und wähle Einfügen > Modul.
  3. Makro schreiben: Füge den folgenden Code in das Modul ein:
Sub Test()
    Dim wert1 As Long, wert2 As Long, activerow As Integer
    Dim wbk1 As Workbook, wbk2 As Workbook
    Dim pfad As String, Dateiname As String, datei As String

    pfad = ActiveWorkbook.Path & "\"
    Set wbk1 = ActiveWorkbook

    wert1 = InputBox("Geben Sie bitte die KENNUMMER der ERSTEN einzulesenden Evaluation an", "Startwert", , 100, 100)
    wert2 = InputBox("Geben Sie bitte die KENNUMMER der LETZTEN einzulesenden Evaluation an", "Endwert", , 100, 100)

    Do While wert1 <= wert2
        Dateiname = "EvalA_" & Format(wert1, "0000") & ".xls"
        datei = pfad & Dateiname

        If Dir(datei) <> "" Then
            Workbooks.Open Filename:=datei
            Set wbk2 = ActiveWorkbook

            ' Hier die benötigten Werte einlesen
            ' ...

            wbk2.Close
        Else
            MsgBox "Die Datei " & Dateiname & " wurde nicht gefunden"
        End If

        wert1 = wert1 + 1
    Loop
End Sub
  1. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Makro stoppt nach dem Öffnen: Wenn dein Makro nach Workbooks.Open Filename:=datei stoppt, könnte das daran liegen, dass die aktive Arbeitsmappe nicht korrekt gesetzt ist. Stelle sicher, dass du die Arbeitsmappen wie oben beschrieben deklarierst und setzt.

  • Fehlermeldung "Datei nicht gefunden": Achte darauf, dass der Pfad zu deiner Datei korrekt ist. Verwende Debug.Print oder MsgBox datei, um den Pfad zu überprüfen.


Alternative Methoden

  • Direct Open: Anstelle von ActiveWorkbook kannst du direkt mit der Workbook-Referenz arbeiten. Zum Beispiel:
Workbooks.Open Filename:=datei
Set wbk2 = Workbooks(Dateiname)
  • Fehlerbehandlung: Verwende On Error Resume Next, um das Makro robust zu machen und Fehler abzufangen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du mit dem Workbooks.Open Befehl eine Datei öffnest und die Werte liest:

Sub Beispiel()
    Dim wbk As Workbook
    Set wbk = Workbooks.Open(Filename:="C:\Pfad\zu\deiner\Datei.xlsx")
    MsgBox wbk.Sheets(1).Cells(1, 1).Value
    wbk.Close
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was viele Fehler vermeiden kann.
  • Optimierung der Performance: Deaktiviere Bildschirmaktualisierung und automatische Berechnungen während der Makroausführung:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
  • Verwaltung von Arbeitsmappen: Halte einen klaren Überblick über alle offenen Arbeitsmappen, indem du sie in Variablen speicherst.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nur im VBA-Editor und nicht in Excel?
Das kann daran liegen, dass die aktive Arbeitsmappe im VBA-Editor anders ist. Stelle sicher, dass du die Referenzen korrekt setzt.

2. Was kann ich tun, wenn die Datei nicht gefunden wird?
Überprüfe den Pfad und den Dateinamen. Verwende MsgBox oder Debug.Print, um den Pfad auszugeben und sicherzustellen, dass er korrekt ist.

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