1.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich vollende gerade ein Projekt und würde es gerne etwas vereinfachen. Deshalb habe ich ein UserForm erstellt.

Ich muss leider einige Infos aus einer anderen Datei kopieren von der ich den Pfad weiß, mein Vorteil ist die Infos sind alle immer in der gleichen Zeile. Die Zeile ist aber immer eine andere.

Deswegen würde ich gerne in mein UserForm in einem Feld die Zeilennummer eintragen und Excel (VBA) soll die Zeile selbstständig inklusiver der Formattierung kopieren.

Das Ziel worksheet 2 Zeile 2 ist immer identisch.

Ich hoffe ihr könnt mir wieder helfen

Auf meiner suche bin ich über das gestolpert jedoch wird hier immer der gleiche bereich kopiert und die Zeile ist nicht variabl:

Sub Daten_aktualisieren()
Application.DisplayAlerts = False 'Bildschirmaktivierung aus
    Application.Dialogs(xlDialogOpen).Show 'aktivieren des Dialoga
    'Workbooks.Open Filename:="D:\Dein_Pfade\Quelldatei.xls" 'bestimmte Datei auswählen
        On Error GoTo Ende 'wenn die Datei keine "Tabelle2" hat gehe zu Ende:
            Sheets("Tabelle2").Select 'Tabelle2 auswählen
                Range("B11:U404").Copy 'Bereich kopieren
            ActiveWindow.Close 'Datei schließen
        Range("B11").Select 'Zelle B11 aktivieren
    ActiveSheet.Paste 'in aktivierte Tabelle einfügen
Ende: ' weitermachen ab hier wenn "Error"
    ActiveWindow.Close 'Schließen der ausgewählten datei
Application.DisplayAlerts = True 'Bildschirmaktivierung an
End Sub

2 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

schon wieder ich wink.

In deinem gefundenen Code wird die Datei ja über den Öffnen-Dialog ausgesucht und geöffnet. Wenn du den Namen und den Pfad der Datei kennst, brauchst du das nicht und kannst die Datei direkt öffnenen.

Der folgende Beispielcode öffnet eine Datei (Beispieldatei.xlsx), kopiert die Zeile 2 im Arbeitsblatt "Tabelle1" und fügt die kopierte Zeile in der aktuellen Arbeitsmappe in dem Arbeitsblatt "Tabelle2" ebenfalls in Zeile 2 ein:
Sub Zeile_kopieren()
Dim wbZiel As Workbook
Dim wbQuelle As Workbook

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Die Mappe, in der der Code liegt
Set wbZiel = ThisWorkbook
'Datei, die geöffnet werden soll
Set wbQuelle = Workbooks.Open("C:\Test\Beispieldatei.xlsx")

'Zeile 2 der geöffneten Datei kopieren und in aktuelle Mappe, Tabelle1, Zeile 2 einfügen
wbQuelle.Worksheets("Tabelle1").Rows(2).Copy Destination:=wbZiel.Worksheets("Tabelle2").Range("A2")

'Quelldatei ohne Speichern wieder schließen
wbQuelle.Close SaveChanges:=False

Set wbQuelle = Nothing
Set wbZiel = Nothing

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub

Den Code musst du natürlich auf deine Verhältnisse anpassen und in deine Userform integrieren. Die Zahl 2 im Kopierbefehl musst du durch deine Zeilennummer aus der Userform ersetzen.

Gruß

M.O.

0 Punkte
Beantwortet von fat61 Einsteiger_in (49 Punkte)
Vielen Dank ich habe das ganze noch etwas Modifiziert.

'X ist Wert aus der Textbox

Dim X As Variant
X = TextBox_Wert.Value

und dann die Zeile

wbQuelle.Worksheets("Tabelle1").Rows(X).Copy Destination:=wbZiel.Worksheets("Tabelle2").Range("A2")

geändert.

Jetzt kann man jede beliebeige Zeile aus der anderen Tabelle kopieren.

Danke!
...