Hilfe!!! Daten aus einem WS in ein anderes kopiere

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Helmut
Geschrieben am: 25.11.2003 08:32:09

Hallo liebe Forumleute,

ich habe wieder ein kleines Problem, bei dem ich mächtig anstehe.
Ich habe eine Excel-Datei, in der ich am ersten Tabellenblatt einige Buttons habe, um Macros auszuführen.
Ein Macro davon sucht im zweiten Tabellenblatt dieser Excel-Datei in einer Spalte nach dem Eintrag "0A Ergebnis". Wenn dieser Eintrag gefunden wurde, soll eine andere Excel-Datei geöffnet werden und aus der ersten Datei ein Wert aus einer Zelle in die neu geöffnete Datei in eine bestimmte Zelle kopiert werden.
Danach soll die neu geöffnete Datei gespeichert und geschlossen werden.
(Später sollen noch andere "Case"-Abfragen für solche Kopiervorgänge eingebaut werden)

Dazu habe ich ein Macro "manuell" aufgezeichnet und angepasst, aber es kommt nur bis zum Kopiervorgang des Wertes aus der ersten Datei.
Die 2. Datei wird zwar geöffnet, aber mehr schon nicht.
Fehlermeldung:
Laufzeitfehler '9'
Index außerhalb des gültigen Bereichs

Meine Syntax ist folgende:
(der Debugger bleibt in der Zeile stehen, die ich mit 2 Rufzeichen am Anfang markiert habe!! Die Variablen KST, Jahr und Monat sind global gesetzt und bekannt; die Datei wird ja auch geöffnet)
Mit der Variablen m zähle ich die Anzahl der "belegten" Zeilen in der Spalte.


Private Sub CommandButton3_Click()
' Wenn in Spalte F (Auftragsarten AA) die verschiedenen Auftragsarten "XY Ergebnis" stehen, zugehörige Werte
' der Spalten I (6) (Std.) und M (13) (Kosten) kopieren und in Periodenarbeitsmappe einfügen
Dim m As Integer
Dim n As Integer
    m = 1
    
    Sheets("ETODATE").Activate
    Sheets("ETODATE").Range("F2").Select
    
    While IsEmpty(ActiveCell.Value) = False
        ActiveCell.Offset(1, 0).Select
        m = m + 1
    Wend
    
    For n = 2 To m
        Select Case Sheets("ETODATE").Cells(n, 6)
          Case "0A Ergebnis"
            Workbooks.Open FileName:="H:\20031124\" & KST & "_" & Jahr & "_" & Monat & ".xls"
            Windows("E-Todate.xls").Activate
            Sheets("ETODATE").Range("I" & n & "").Copy
!!          Windows(" " & KST & "_" & Jahr & "_" & Monat & ".xls").Activate
            Sheets("Tabelle1").Range("C4").Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
            Application.CutCopyMode = False
            ActiveWorkbook.Close SaveChanges:=True
        End Select
    Next n
End Sub


Was mache ich hier falsch?? Beim Kompilieren kommt keine Fehlermeldung! Schafft VBA den Fensterwechsel für den Kopiervorgang nicht? Gehört vor ..Windows("....) noch eine genauere Angabe? Auch für die Range-Auswahl davor mußte ich das aufgezeichnete Macro anpassen indem ich den Sheetnamen vor den Range gesetzt habe (Sheets("ETODATE").Range("I" & n & "").Select)!)
Bei Windows() finde ich aber keinen geeignete Angabe "davor"!?

Bitte euch um Hilfe und eventuelle genaue Scriptangabe, denn ich bin noch recht Anfänger und mache Learning by Doing, aber hier weiß ich nach Stunden des Ausprobierens auch nicht weiter!

Danke im Voraus!

LG
Helmut
Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Gunther
Geschrieben am: 25.11.2003 08:43:27

Du musst das Worksheet aktivieren, nicht nur die Datei!

Bsp.
Workbooks("Name").Worksheets("Name").Activate

Gruß Gunther


Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Martial
Geschrieben am: 25.11.2003 08:52:22

Die Datei heisst auch
(KST & "_" & Jahr & "_" & Monat & ".xls")
und nicht
(" " & KST & "_" & Jahr & "_" & Monat & ".xls")

Gruss, Martial


Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Helmut
Geschrieben am: 25.11.2003 10:24:16

Hi Martial,

super, danke dir recht herzlich!!! Es war wirklich nur der Dateiname mit den Hochkommas!!?
Wieso ist beim Kompilieren für Excel-VBA die Syntax von mir vorher aber in Ordnung??
Da wäre ich nie dahintergekommen!!!
Weißt du vielleicht noch wie ich mehrere Case-Abfragen in der Schleife einbinden kann, wobei bei jedem richtigen "Case" ein anderer Wert in eine andere Zelle kopiert werden soll. Die komplett ausgefüllte Tabelle soll dann gespeichert un geschlossen werden.
Sollte ich dazu das Workbook außerhalb der Schleife öffnen, dann in der ersten Datei suchen und bei richtigem "Case" 2. Datei aktivieren und hineinkopieren?

Danke dir nochmals!

LG
Helmut


Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Martial
Geschrieben am: 25.11.2003 11:32:50

Hi Helmut

Ja, wenn auf jeden Fall immer in dasselbe Workbook kopiert wird, dann machst du es besser einmal auf, lässt die Schleife laufen und schliesst es dann wieder. Das kann z.B. so aussehen (Korrigier evtl die Namen etc.): Man kann übrigens auch auf das Selektieren verzichten...


Sub versuchNr1()
Dim cell
Dim WB_KST_Tab1
'folgende Zeile verhindert die Bildschirmaktualisierung, damit man das Öffnen nicht mitbekommt (einkommentieren)
'nicht vergessen wieder auf true zu stellen
'Application.ScreenUpdating = False
Workbooks.Open FileName:="H:\20031124\" & KST & "_" & Jahr & "_" & Monat & ".xls"
Set WS_KST_Tab1 = Workbooks(KST & "_" & Jahr & "_" & Monat & ".xls").Worksheets("Tabelle1")
With Workbooks("E-Todate.xls").Worksheets("ETODATE")
    'wenn alle Zellen ausgefüllt sind, gehts so:
    For Each cell In .Range("F2:F" & .Range("F2").End(xlDown).Row)
        Select Case cell
        
            Case "OA Ergebnis"
                .Range("I" & cell.Row).Copy
                WS_KST_Tab1.Range("I" & cell.Row).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                    False, Transpose:=False
                Application.CutCopyMode = False
                
            Case "Was auch immer"
                .Range("K" & cell.Row).Copy
                WS_KST_Tab1.Range("K" & cell.Row).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                    False, Transpose:=False
                Application.CutCopyMode = False
            
        End Select
    Next cell
End With
Workbooks(KST & "_" & Jahr & "_" & Monat & ".xls").Close SaveChanges:=True
Set WS_KST_Tab1 = Nothing
'falls auf false gestellt wurde, wieder auf true stellen
'Application.ScreenUpdating = True
End Sub



Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Helmut
Geschrieben am: 25.11.2003 20:54:58

Hi Martial,

das funktioniert sehr gut! Ich danke dir! Vor allem das mit der Bildschirmaktualisierung ist superfein! Habe es ohne probiert, kein Vergleich!!

Schönen Abend,
LG
Helmut


Bild


Betrifft: AW: Hilfe!!! Daten aus einem WS in ein anderes kopiere
von: Helmut
Geschrieben am: 25.11.2003 10:27:21

Hi Gunther,

danke für den Tipp; die Ursache war zwar der Dateiname, wie Martial das geschrieben hat, aber dein Tipp war sehr wichtig für mich, denn über diese Sache bin ich schon des Öfteren gestolpert!

Danke dir für die rasche Hilfe!

LG
Helmut


Bild

Beiträge aus den Excel-Beispielen zum Thema " Hilfe!!! Daten aus einem WS in ein anderes kopiere"