Tabelle einlesen per Makro
Betrifft: Tabelle einlesen per Makro
von: Bernd
Geschrieben am: 28.08.2014 10:25:04
Ich würde mich gerne von einen diversen Verknüpfungen zwischen Exceldateien verabschieden und Quelldaten per Makro in die Zieldatei einlesen. Die Daten sollen als Werte eingelesen werden, idealerweise auch das Format.
Es sollte möglichst so ablaufen:
1. Registerblatt der Quelldatei, in der sich die relevanten Daten befinden, soll vorgegeben werden (im Code).
2. Registerblatt der Zieldatei, in welche die Daten "importiert" werden soll, soll vorgegeben werden (im Code).
3. Der relevanten Datenbereich sollen ebenfalls vorgegeben werden: z. B. Ich möchte aus der Quelldatei A / Registerblatt "Daten" / Spalte B bis E, Zeile 4 bis Zeile 100 nach Zieldatei B / Registerblatt "Import" / Spalte C-F, Zeile 2 bis Zeile 103, Daten importieren.
Schön wäre es, wenn man bei Start des Makros die Quelldatei über eine Art Datei-Explorer aus einer beliebigen Verzeichnisstruktrur auswählen könnte.
Anbei habe ich Musterdateien angehängt, wie das optisch aussehen sollte.
Quelldatei:
https://www.herber.de/bbs/user/92344.xlsx
Zieldatei:
https://www.herber.de/bbs/user/92346.xlsx
Besten Dank im Voraus für Hilfe!
 |
Betrifft: AW: Tabelle einlesen per Makro
von: fcs
Geschrieben am: 28.08.2014 13:54:51
Hallo Bernd,
nachfolgend ein entsprechendes Makro, das in ein allgemeines Modul der Zieldatei oder in deiner persönlichen Makroarbeitsmappe eingefügt werden muss. Beim Start des Makros muss die Zieldatei die aktive Datei sein.
Gruß
Franz
Sub DatenImportieren()
Dim wkbQuelle As Workbook, wksQuelle As Worksheet, varQuelle As Variant
Dim wkbZiel As Workbook, wksZiel As Worksheet
On Error GoTo Fehler
Set wkbZiel = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte die Datei mit den Quelldaten auswählen"
Application.ScreenUpdating = False
If .Show = -1 Then
varQuelle = .SelectedItems(1)
Set wkbQuelle = Application.Workbooks.Open(varQuelle, ReadOnly:=True)
Set wksQuelle = wkbQuelle.Worksheets("Daten")
Set wksZiel = wkbZiel.Worksheets("Import")
With wksZiel.Range("C2:F103")
.ClearContents
.ClearFormats
End With
wksQuelle.Range("B4:E100").Copy
With wksZiel.Range("C2")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
wkbQuelle.Close savechanges:=False
Set wkbQuelle = Nothing
End If
End With
Fehler:
Application.ScreenUpdating = True
With Err
Select Case .Number
Case 0 'alles OK
Case 9
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Tabelle ist in Datei nicht vorhanden", vbOKOnly, "Fehlerprüfung"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbOKOnly, "Fehlerprüfung"
End Select
End With
If Not wkbQuelle Is Nothing Then wkbQuelle.Close savechanges:=False
End Sub
 |
Betrifft: AW: Tabelle einlesen per Makro /Danke!
von: Bernd
Geschrieben am: 28.08.2014 14:36:55
Hallo Franz!
Scheint perfekt zu funktionieren! Vielen Dank !
Bernd
Beiträge aus den Excel-Beispielen zum Thema "Tabelle einlesen per Makro"