shaggy84
Goto Top

mit VBA Teile einer unbekannten Excel Datei in eine neue kopieren

Hallo Forum User, bastla, biber und alle die anderen,

ich bin mal wieder kurzzeitig von meinen Servern weg und stehe erneut vor einem kleinen VBA Problem.

Ich möchte per Makro aus einer unbestimmten Datei Teile in meine Datei kopieren.

Dieser erste Code soll den gesammten Inhalt von der Quelldatei in meine Zieldatei kopieren. Das Makro starte ich von der Zieldatei heraus.
Bis jetzt kopiert er den Inhalt der Quelldatei in die Zwischenablage. Wie wechsel ich zur Zieldatei zurück, ohne ihren Namen dafür angeben zu müssen? (falls nicht möglich natürlich auch mit Namen)

Application.Dialogs(xlDialogOpen).Show

Sheets("Tabelle1").Range("1:65535").Copy  

'wie wechsel ich hier zur Zieldatei zurück?  
Sheets("TT").Range("1:65535").PasteSpecial _  
Paste:=xlPasteValues

Sheets("TT").Activate  
Sheets("TT").Cells(1, 1).Select  

Anschließend möchste ich in der Zieldatei "ausmisten", d.h. Zeilen Löschen wenn in Spalte xy nicht "Y" drin steht und ähnliches. Welchen Befehl kann man nehmen, um nur z.B. die ersten beiden Buchstaben einer Zelle ab zu fragen? (mit den WENN Funktionen kenne ich dies, aber mit VBA?)

Grüße, Gregor

Content-ID: 82577

Url: https://administrator.de/contentid/82577

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

wakko
wakko 07.03.2008 um 16:25:08 Uhr
Goto Top
Moin,

das geht folgendermaßen:
Dim wb As Workbook 'Arbeitsmappe def.  
Set wb = ActiveWorkbook 'Arbeitsmappe auf das aktive Workbook setzen  
Application.Dialogs(xlDialogOpen).Show 'Nun ist das aktive Workbook das neu geöffnete  
Sheets("Tabelle1").Range("1:65535").Copy  

'wie wechsel ich hier zur Zieldatei zurück? -> wb ansprechen  
wb.Sheets(1).Range("1:65535").PasteSpecial _  
Paste:=xlPasteValues 
Abfrage der ersten beiden Zeichen einer Zelle:
erstebeidezeichen = Left(ActiveSheet.Cells(1,1).value, 2)

MfG,
Henrik
bastla
bastla 07.03.2008 um 16:54:01 Uhr
Goto Top
Hallo Shaggy84!

Einfach die aktuelle Mappe als Objekt zwischenspeichern:
...
Dim Ziel As Workbook
Set Ziel = ThisWorkbook

Application.Dialogs(xlDialogOpen).Show

Worksheets("Tabelle1").Range("1:65535").Copy  
Ziel.Worksheets("TT").Range("1:65535").PasteSpecial _  
Paste:=xlPasteValues
Application.CutCopyMode = False

Ziel.Worksheets("TT").Activate  
Worksheets("TT").Cells(1, 1).Select  
...
"Sheets()" habe ich durch "Worksheets()" ersetzt, da es hier ja um Tabellenblätter geht (besonders dann ein Thema, wenn Du nicht über den Namen, sondern über Index darauf zugreifen willst).
Für die ersten 2 Zeichen einer Zeichenkette kannst Du "Left()" verwenden, also etwa
If Left(Worksheets("TT").Cells(3, 5).Value, 2) = "AB" Then ...  
Weitere in diesem Zusammenhang nützliche Funktionen wären "Right()" und "Mid()" sowie "InStr()" ...

Grüße
bastla

[Edit] Wer hat an der Uhr gedreht? face-wink Sorry, wakko, als ich mit dem Kommentar begonnen habe, war Dein Posting noch nicht da ... [/Edit]
Shaggy84
Shaggy84 11.03.2008 um 08:09:56 Uhr
Goto Top
Funktioniert wunderbar, danke ihr beiden face-smile