Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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"