Excel 2003 Makro Ausführung

Leola13

Erfahrenes Mitglied
Hai,

folgendes Makro :
Code:
Sub aaa()


Dim Zelle As Range

    
     For Each Zelle In Workbooks("VBA SLI.XLS").Worksheets("SLI").Range("F4", "F" & Range("a65536").End(xlUp).Row)
     
        If Zelle = "XYZ" Then
     
            Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv").Rows(6).Insert
            Zelle.EntireRow.Copy Destination:=Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv").Range("A6")
    
        Else
        
            b = b + 1
        
        End If
     
     Next Zelle

End Sub

Funktioniert :
- wenn ich ihn aus dem Editor starte (Ausführen - Sub ausführen ...)
- wenn ich Einzelschritte durchführe (F8)

Funktioniert nicht :
-wenn ich aus der Datei VBA SLI heraus starte. Dann wird nach der ersten gefundenen Stelle, incl. Kopie, ohne Fehelrmeldung aufgehört.

Was habe ich falsch gemacht ?

Ciao Stefan
 
item: Aus welcher Datei fühsrt du das mit F8 aus?

item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?

item: Es empfiehlt sich der Übersicht zuliebe die 2 Worksheets als Objekte zu defineren. Macht den Code lesbarer

Visual Basic:
Sub aaa()
  
Dim Zelle As Range
Dim wsSli AS Worksheet
Dim wsArchiv As Worksheet

     'Objekte setzen
     Set wsSli = Workbooks("VBA SLI.XLS").Worksheets("SLI")
     Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv") 
    
     For Each Zelle In wsSli.Range("F4", "F" & Range("a65536").End(xlUp).Row)
          If Zelle = "XYZ" Then
               wsArchiv.Rows(6).Insert
               Zelle.EntireRow.Copy Destination:=wsArchiv.Range("A6")
          Else        
               b = b + 1        
          End If     
     Next Zelle

     ' Objekte brav wieder aufräumen
     Set Zelle = Nothing
     Set wsSli = nothing
     Set wsArchiv = Nothing

End Sub
 
Ich bin mir jetzt nicht sicher, aber müssen Arbeitsmappen zur Laufzeit nicht per Workbooks.Open hinzugefügt werden?

Also in der Art von
Visual Basic:
Set wbArchiv=Workbooks.Open("VBA SLI Aufgabe.XLS")
Set wsArchiv=wbArchiv("Archiv")
'blablbalba

Wie gesagt, bin mir nicht sicher, da die Schreibweise
Visual Basic:
Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv")
eigentlich den Zugriff auf ein Element der Workbooks-Auflistung beschreibt, welches vorher der Auflistung per Open hinzugefügt werden muss.

P.S.: Wozu soll das b=b+1 gut sein?
 
Das open() ist glaub nur, wenn sie noch nicht offen sind. Ich geh eigentlich davon aus, dass dies bereits der Fall ist - wenn nicht, dann gibts hoffentlich ein Fehler.
 
Hai,

item: Aus welcher Datei fühsrt du das mit F8 aus?

VBA SLI Aufgabe.XLS

item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?

Gar nicht, bzw. ich verstehe die Frage nicht. (?)


item: Es empfiehlt sich der Übersicht zuliebe die 2 Worksheets als Objekte zu defineren. Macht den Code lesbarer

Okay.


Beide Dateien sind auf. In "Schritt 2" sollen die Daten aus der geschlossenen Datei in VBA SLI Aufgaben.XLS kopiert werden.

EIn Button ist noch nicht erstellt.
Ziel ist es aus verschiedenen Projekt-Protokolldateien, die entsprechenden Dateinsätze, die wo mein Name drin steht, in eine "Übersichtsdatei" zu kopieren.

Danke schon mal.

Ciao Stefan
 
Zuletzt bearbeitet von einem Moderator:
Zum 2ten Punkt, den du nicht verstehst zitiere ich dich mal
Funktioniert nicht :
-wenn ich aus der Datei VBA SLI heraus starte. Dann wird nach der ersten gefundenen Stelle, incl. Kopie, ohne Fehelrmeldung aufgehört.
darum meine Frage
item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?

Aber du beschreibst jetzt in das Problem selber
In "Schritt 2" sollen die Daten aus der geschlossenen Datei in VBA SLI Aufgaben.XLS kopiert werden.
Natürlich muss die Datei zuerst geöffnet werden. Zvoni hat beschrieben wie das geht.
 
Hai,

irgendwie ist heute ncht mein Tag.

Beide Dateien sind geöffnet, ich bin in VBA SLI Aufgabe.XLS, starte das Makro und die Daten aus VBA SLI werden kopiert.

Von Hand (F8 im Editor, Einzelschritte) funktioniert es, Makro Start im Editor funktioniert, bei Start des Makros in VBA SLI.XLS wird nur ein Datensatz kopiert.

Irgendwann einmal, wenn ich ein wenig mehr kann, soll das Ganze laufen ohne die VBA SLI zu öffnen.

Ich hoffe jetzt habe ich mich verständlich ausgedrückt.

Ciao Stefan
 
Jepp hast du. Ich anscheinend nicht.

Wenn das VBA SLI noch nicht offen ist, dann musst du es per VBA zuerst öffnen. Ansonsten findet es Excel nicht.
Workbooks("VBA SLI.XLS") greift auf ein offenes Worbook zu. Ergo musst du mit Set wsSli = Workbooks.Open("C:\temp\VBA SLI.XLS") drauf zugreiffen

Visual Basic:
Dim wbSli As Workbook
Dim wsSli AS Worksheet
Dim wsArchiv As Worksheet

     'Objekte setzen
     Set wbSli = Workbooks.open("C:\Temp\VBA SLI.XLS")  'Oder wo das DDIng auch immer steckt
     Set wsSli = wbSli.Worksheets("SLI")
     Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv") 
...
     Call wbSli.close
 
Hai,

Nachtrag :

Das Problem bleibt. Starte ich das Makro von VBA SLI Aufgabe.XLS wird nach dem ersten kopierten Datensatz aufgehört.

Starte ich von VBA SLI funktioniert es.

In beiden Fällen keine Fehlermeldung.

Langsam verstehe ich nur Bahnhof.

Ciao Stefan
 
Zeig mal dein aktueller Code.

Schon mal mit debug nachgeschaut was passiert?

Nachtrag im for each solltest du beim 2ten Range das Worksheet angeben, sonst nimmt er dort das aktuelle
Visual Basic:
wsSli.Range("a65536").End(xlUp).Row
 
Zurück