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

In einer Schleife immer die nächste Zeile kopieren

In einer Schleife immer die nächste Zeile kopieren
06.07.2016 17:07:16
Dudek
Hallo alle zusammen,
ich habe folgendes Problem: Ich habe eine Schleife programmiert, die mir eine bestimmte Formel, die Zellenverknüpfungen enthält, kopiert, anschließend alle Dateien aus einem bestimmten Ordner öffnet, damit die genannten Zellenverknüpfungen übernommen werden, die nun vorhandenen Daten kopiert und einfügt und im Anschluss alle Dateien wieder schließt. Nun ist es aber so, dass die Anzahl an geöffneten Dateien zu groß wird, sodass ich das ersetzen der Verknüpfung durch Werte und das schließen der jeweiligen Datei immer sofort umsetzen muss. Da für jede Datei eine eigene Zeile vorgesehen ist, muss Excel jeweils nach schließen der einen und öffnen der neuen Datei immer die darunterliegende Zeile kopieren und ersetzen, nur weiß ich nicht, welchen Befehl ich dafür geben muss, damit er eben dies macht. An der Stelle habe ich untenstehend die Fragezeichen platziert. Vielleicht hat hier ja jemand eine Idee?
Sub OpenFiles()
Const FILE_PATH As String = "H:\Shared\Vertrieb\TEAM\Projekte\Projektmappe\"
Dim MyFile As String
MyFile = Dir$(FILE_PATH & "*.xls")
Do Until MyFile = ""
Workbooks.Open Filename:=FILE_PATH & MyFile
Workbooks("Projektdatei_Text.xlsm").Activate
Range("E2:AF999").Select
Cells.Replace What:="#REF!", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Workbooks(MyFile).Close SaveChanges:=False
MyFile = Dir$
Loop
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: In einer Schleife immer die nächste Zeile kopieren
07.07.2016 08:33:32
UweD
Hallo
das Kopieren ist jetzt alles nur geraten; musst du anpassen. Aber so könnte es gehen.
Option Explicit 
 
Sub OpenFiles() 
    Const FILE_PATH As String = "H:\Shared\Vertrieb\TEAM\Projekte\Projektmappe\" 
    Dim MyFile As String, Z As Integer, WB2, TB2 
         
    MyFile = Dir$(FILE_PATH & "*.xls") 
    Z = 1 
    Do Until MyFile = "" 
        Set WB2 = Workbooks.Open(Filename:=FILE_PATH & MyFile) 
        Set TB2 = WB2.Sheets("DeinBlatt") 'Blatt anpassen 
        With Workbooks("Projektdatei_Text.xlsm").Sheets("Tabelle1") 'Blatt anpassen 
            .Range("E2:AF999").Replace What:="<>#REF!", Replacement:="", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False 
             
            'dein Kopierbefehl 
            '   Beispiel: 
            '   A(deine Zeile) bis D(deine Zeile) aus Projektdatei_Text,Tabelle1 
            '   nach B10:F10 der geöffneten Datei,DeinBlatt 
            .Range(.Cells(Z, 1), .Cells(Z, 4)).Copy TB2.Range("B10") 
            Z = Z + 1 
             
        End With 
        Workbooks(MyFile).Close SaveChanges:=False 
         
        MyFile = Dir$ 
    Loop 
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD

Anzeige
AW: In einer Schleife immer die nächste Zeile
07.07.2016 12:28:07
Dudek
Vielen Dank schon mal für die Rückmeldung. Allerdings will ich keine Werte aus der anderen Datei kopieren, da daraus nur ausgewählte Informationen gezogen werden. Es soll einfach nur jeweils der Zeilenausschnitt in der Datei kopiert und als Wert ersetzt werden. Beispiel:
-1.Step: Nachdem die andere Datei geöffnet wurde, kopiere in Ausgangsdatei E2:AF2 und setzte das als Wert ein, schließe die andere Datei wieder.
-2. Step: Öffne die nächste Datei, kopiere in Ausgangsdatei E3:AF3 und setzte das als Wert ein, schließe die andere Datei wieder.
...
Gibt es hierfür auch eine Möglichkeit?
Vielen Dank im Voraus!

Anzeige
AW: In einer Schleife immer die nächste Zeile
07.07.2016 13:17:05
UweD
Hallo nochmal
du hast noch nicht angegeben, welcher Bereich kopiert werden soll, nur wohin.
Das kannst du ja sicherlich alleine noch anpassen.
Option Explicit 
 
Sub OpenFiles() 
    Const FILE_PATH As String = "H:\Shared\Vertrieb\TEAM\Projekte\Projektmappe\" 
    Dim MyFile As String, Z As Integer, WB2, TB2 
          
    MyFile = Dir$(FILE_PATH & "*.xls") 
    Z = 1 
    Do Until MyFile = "" 
        Set WB2 = Workbooks.Open(Filename:=FILE_PATH & MyFile) 
        Set TB2 = WB2.Sheets("DeinBlatt") 'Blatt anpassen 
        With Workbooks("Projektdatei_Text.xlsm").Sheets("Tabelle1") 'Blatt anpassen 
            .Range("E2:AF999").Replace What:="<>#REF!", Replacement:="", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False 
            '----- 
             ' aus der geöffneten Datei den festen Bereich kopieren 
            TB2.Range("E1:AF1").Copy 
             
            ' in Zieldatei mit variabler Zeile als Wert einfügen 
            .Range("E" & Z & ":AF" & Z).PasteSpecial Paste:=xlPasteValues 
             
            Application.CutCopyMode = False 
            Z = Z + 1 
            '----- 
             
        End With 
        Workbooks(MyFile).Close SaveChanges:=False 
          
        MyFile = Dir$ 
    Loop 
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD

Anzeige
AW: In einer Schleife immer die nächste Zeile
08.07.2016 10:11:41
Tobias
Funktioniert, vielen Dank!!!

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige