Hallo zusammen,
ich bin ein blutiger Anfänger in VBA Programmierung und stehe vor ein Problem.
Es soll aus 3 Spalten einer Datei im rtf-Format Daten (Zahlen und Text) in drei bestimmte Spalten in eine Excel Datei (Worksheets("Ziel")), mittels einer Schaltfläche, importiert werden.
Da sich Excel und ein rtf-Format nicht gut verstehen *zwinkersmiley*, wird über den bereits geschriebenen VBA Code, die rtf-Datei erst in Word eingefügt und daraus die Daten zunächst in ein hinzugefügtes Arbeitsblatt (Worksheets(1)) in Excel eingesetzt, um letztendlich daraus kopiert und auf das richtige Worksheets("Ziel") importiert zu werden.
Soweit zur Theorie, das Problem ist nun, dass es in der Excel Datei, wo sich das Worksheets("Ziel") befindet, noch mehrere Worksheets gibt.
Wie bereits geschrieben wird das Arbeitsblatt (Worksheets(1)), mit den Daten die importiert werden sollen, zunächst in die Excel Datei eingefügt und nach der Importierung der Daten, sollte es wieder verschwinden.
Jetzt werden aber nicht die Daten aus dem Worksheets(1) an der richtigen Stelle in Worksheets("Ziel") eingefügt, sondern aus dem ersten Arbeitsblatt in der Excel Datei, das aber nicht Tabelle1 heißt.
Wie muss ich den Code ändern, sodass die Daten nur aus dem temporär hinzugefügten Worksheets(1) berücksichtigt werden?
Ich hoffe ihr könnt mir helfen
So sieht der Code aus:
Sub Schaltfläche1_Klicken()
Dim wdApp As Object
Dim wdDoc As Object
Dim sFile As String
Dim fdDialog As FileDialog
Set fdDialog = Application.FileDialog(msoFileDialogFilePicker)
With fdDialog
.Filters.Clear
.Filters.Add "RTF-Dateien", "*.rtf", 1
If .Show = -1 Then
sFile = .SelectedItems(1)
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(sFile)
wdApp.activedocument.Tables(2).Select 'zweite Tabelle wählen
wdApp.Selection.Copy
Worksheets.Add
ActiveSheet.Paste
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing
'***ANFANG Spalte A nach A7 kopieren
Range("A2:A" & ActiveSheet.UsedRange.Rows.Count & "").Select
Selection.Copy
Worksheets("Ziel").Select
Range("A7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets(1).Select
'***ENDE Spalte A nach A7 kopieren
'***ANFANG Spalte B nach B7 kopieren
Range("B2:B" & ActiveSheet.UsedRange.Rows.Count & "").Select
Selection.Copy
Worksheets("Ziel").Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets(1).Select
'***ENDE Spalte B nach B7 kopieren
'***ANFANG Spalte C nach D7 kopieren
Range("C2:C" & ActiveSheet.UsedRange.Rows.Count & "").Select
Selection.Copy
Worksheets("Ziel").Select
Range("D7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'***ENDE Spalte C nach D7 kopieren
Application.DisplayAlerts = False
Worksheets(1).Delete
Application.DisplayAlerts = True
End If
End With
Set fdDialog = Nothing
End Sub
|