Tabellen abgleichen

Bild

Betrifft: Tabellen abgleichen
von: Barbara
Geschrieben am: 07.07.2015 22:55:35

Hallo,
Könnt Ihr mir bitte helfen?
Es dürfte nicht all zu schwer sein, wenn man sich auskennt. Die Beschreibung des Problems ist etwas länger. Aber ich möchte es möglichst verständlich erklären.
Gegeben sind zwei Excel-Tabellen Haus.xls und Kunde.xls, die abzugleichen sind. Siehe Anhang.
Gesucht: Ein Makro, das folgendes kann:
Es soll in der Datei Haus.xls stehen und mittels Button "Bestellung abholen" im Blatt "Liste" aufgerufen werden.
Das habe ich hier bereits vorbereitet.
Nun soll man aufgefordert werden, die andere Datei Kunde.xls auszuwählen. Auch das habe ich vorbereitet und hoffe, dass dieser Code OK ist. Falls nicht, bitte um Hinweise.
Nun sollen Werte bestimmter Zellen aus Kunde.xls nach Haus.xls übertragen werden.
Welche Zellen übertragen werden sollen, steht in Haus.xls im Bereich mit dem Namen "Kundendaten" (Blatt "Liste" B5 bis B11).
Es soll also Bestellung!C3 von Kunde.xls in die selbe Zelle Bestellung!C3 in Haus.xls übertragen werden.
Dann das selbe mit
Bestellung!C4
Bestellung!C7
usw.
bis die Liste durch ist.
Das wär's.
Hoffe, mein Problem nicht zu umständlich dargelegt zu haben und freue mich auf Eure Antworten.
LG,
Barbara

Bild

Betrifft: wo sind die Dateien? o.T.
von: Sepp
Geschrieben am: 07.07.2015 22:57:51

Gruß Sepp


Bild

Betrifft: AW: Tabellen abgleichen
von: Barbara
Geschrieben am: 07.07.2015 22:59:26
Leider kann ich keine Dateien hochladen.
Nun versuche ich nochmals, Haus.xlsm hochzuladen.
https://www.herber.de/bbs/user/98690.xlsm

Bild

Betrifft: AW: Tabellen abgleichen
von: Barbara
Geschrieben am: 07.07.2015 23:02:04
Und hier die Datei Kunde.xlsx.
https://www.herber.de/bbs/user/98691.xlsx
ist nur schwierig, weil ich nach dem Hochladen wieder zur Texteingabe zurück muss, um den Link einzufügen.
Hoffe, das ist nun richtig so.
LG,
Barbara

Bild

Betrifft: AW: Tabellen abgleichen
von: Sepp
Geschrieben am: 07.07.2015 23:21:18
Hallo Barbara,
wenn die Zellen immer eins zu eins übertragen werden sollen, dann so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub holeDaten()
  Dim strFile As String, strF As String
  Dim vntRef As Variant, vntI As Variant
  
  vntRef = Array("C3", "C4", "C7", "F4", "F5") 'auszulesende Zellen
  
  With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = "E:\Forum"
    .Title = "Datei auswählen"
    .ButtonName = "Auswahl..."
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then strFile = .SelectedItems(1)
  End With
  
  If Len(strFile) Then
    strF = Left(strFile, InStrRev(strFile, "\"))
    strF = "'" & strF & "[" & Mid(strFile, InStrRev(strFile, "\") + 1) & "]Bestellung'!"
    With ThisWorkbook.Sheets("Bestellung")
      For Each vntI In vntRef
        With .Range(vntI)
          .Formula = "=" & strF & vntI
          .Value = .Value
        End With
      Next
    End With
  End If
  
End Sub


Noch ein Hinweis: So ein Code gehört in ein allgemeines Modul und nicht unter "DieseArbeitsmappe"!
Gruß Sepp


Bild

Betrifft: AW: Tabellen abgleichen
von: Barbara
Geschrieben am: 07.07.2015 23:53:17
Danke, aber ganz so ist es doch nicht, wie ich wollte:
Die Auswahl der Datei Kunden soll im selben Ordner sein, und nicht auf E:\Forum.
Dazu habe ich einfach
.InitialFileName = "E:\Forum"
auskomemntiert und gut ises.
Aber: Die auszulesenden Zellen sind im Bereich "Kundendaten" festgelegt und sollen nicht so
vntRef = Array("C3", "C4", "C7", "F4", "F5") 'auszulesende Zellen
definiert werden.
Im Code soll nicht "Bestellung" vorkommen, sondern einfach aus den Zellenverknüpfungen herausgelesen werden.
Denn es sind in Wirklichkeit nicht alle Bezüge auf dieses Blatt "Bestellung" bezogen sondern auch auf andere Blätter.
OK, alles in ein eigenes Modul. Danke.
LG,
Barbara

Bild

Betrifft: AW: Tabellen abgleichen
von: Sepp
Geschrieben am: 08.07.2015 00:13:39
Hallo Barbara,
"Die Auswahl der Datei Kunden soll im selben Ordner sein, und nicht auf E:\Forum."
Sorry, das hätte ich natürlich wissen sollen! Aber wozu glaubst du, ist der Parameter "InitalFilename" wohl da?
"Aber: Die auszulesenden Zellen sind im Bereich "Kundendaten" festgelegt und sollen nicht so
vntRef = Array("C3", "C4", "C7", "F4", "F5") 'auszulesende Zellen
definiert werden. "

Entweder bin ich Blind, oder die "Kundendaten" sind in deiner Beispieltabelle nicht vorhanden!
Ah, du meinst den definierten Namen "Kundendaten", das hättest du ruhig etwas genauer beschreiben können, meine Glaskugel ist nämlich durch die Hitze zersprungen.
Angepasster Code kommt gleich.

Gruß Sepp


Bild

Betrifft: neuer Code
von: Sepp
Geschrieben am: 08.07.2015 00:21:34
Hallo Barbara,

Sub holeDaten()
  Dim strFile As String, strF As String, strSheet As String, strRef As String
  Dim rng As Range
  
  With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = ThisWorkbook.Path
    .Title = "Datei auswählen"
    .ButtonName = "Auswahl..."
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then strFile = .SelectedItems(1)
  End With
  
  If Len(strFile) Then
    strF = "='" & Left(strFile, InStrRev(strFile, "\")) & "[" & _
      Mid(strFile, InStrRev(strFile, "\") + 1) & "]"
    With ThisWorkbook.Sheets("Bestellung")
      For Each rng In ThisWorkbook.Sheets("Liste").Range("Kundendaten")
        If rng.HasFormula Then
          strSheet = Mid(Split(rng.Formula, "!")(0) & "'!", 2)
          strRef = Split(rng.Formula, "!")(1)
          With .Range(strRef)
            .Formula = strF & strSheet & strRef
            .Value = .Value
          End With
        End If
      Next
    End With
  End If
  
End Sub


Gruß Sepp


Bild

Betrifft: korrektur!
von: Sepp
Geschrieben am: 08.07.2015 00:30:27
eine kleine Korrektur.

Sub holeDaten()
  Dim strFile As String, strF As String, strSheet As String, strRef As String
  Dim rng As Range
  
  With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = ThisWorkbook.Path
    .Title = "Datei auswählen"
    .ButtonName = "Auswahl..."
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then strFile = .SelectedItems(1)
  End With
  
  If Len(strFile) Then
    strF = "='" & Left(strFile, InStrRev(strFile, "\")) & "[" & _
      Mid(strFile, InStrRev(strFile, "\") + 1) & "]"
    With ThisWorkbook
      For Each rng In .Sheets("Liste").Range("Kundendaten")
        If rng.HasFormula Then
          strSheet = Mid(Split(rng.Formula, "!")(0), 2)
          strRef = Split(rng.Formula, "!")(1)
          With .Sheets(strSheet).Range(strRef)
            .Formula = strF & strSheet & "'!" & strRef
            .Value = .Value
          End With
        End If
      Next
    End With
  End If
  
End Sub


Gruß Sepp


Bild

Betrifft: AW: korrektur!
von: Barbara
Geschrieben am: 08.07.2015 07:57:14
Hallo Sepp,
Funktioniert. Daaanke!!
Jaja, den definierten Namen "Kundendaten" hätte ich vielleicht als solchen beschreiben sollen.
(siehe mein Eröffnungsbeitrag).
Verzeih meine Ungenauigkeit.
Danke nochmals. Du hat mir sehr geholfen.
LG,
Barbara

Bild

Betrifft: geht doch ;-) nun noch #2 o.T.
von: Sepp
Geschrieben am: 07.07.2015 23:02:09

Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabellen abgleichen"