Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA SVERWEIS? Daten selektiern 2 Datein

Betrifft: VBA SVERWEIS? Daten selektiern 2 Datein von: Heininger
Geschrieben am: 18.09.2020 10:54:12

Hallo Zusammen,

Kurz zu meiner Person: Ich habe vor kurzem erst mit dem VBA Programmieren angefangen somit sind meine Kenntnisse begrenzt. Da es mein erster Beitrag hier im Forum ist, bitte ich schonmal um Entschuldigung falls mir ein "blöder Fehler" beim Erstellen unterlaufen ist.

Zur Ausgangslage:

Es gibt zwei Exceldatein zum einem die Datei Entnahmebeleg_Forum(https://www.herber.de/bbs/user/140304.xlsm) zum anderem Export_Forum (https://www.herber.de/bbs/user/140303.xlsx).

Die Datei Export_Forum wird täglich neu erstellt und am selben Ort unter dem selben namen abgespeichert.

Die Datei Entnahmebeleg_forum befindet sich am selben ablageort wie die Datei Export_Forum.


Da zur Zeit die Daten manuell aus der Datei Export_Forum in die Datei Entnahmebeleg_Forum übertragen werden würde ich gerne dies mittels VBA automatisieren.


Im Entnahmebeleg gibt es zur Zeit 4 Reiter. Die Ersten 3 sind für jeweils einen Lieferanten und der letzte dient zum Anmelden in SAP sowie automatischen versenden der erstellten Belege (VBA Code ist erstellt und funktioniert soweit problemlos)


Ziel:

Nun würde ich gern mittels VBA die datei Export_Forum öffnen und darin die Spalte R nach den drei Lieferanten durchsuchen. Wenn es einen Treffer z.B. in Zelle R1(Lieferant) gibt soll die dazuggehörige Zelle in Spalte A1(Material) sowie Spalte I1 (Menge in Erfass) in die Datei Entnahmebeleg_Forum in den für den Lieferanten erstellten Reiter übertragen werden. Materialnummer jeweils in spalte A und die Menge in Spalte C . Es kann sein dass die selbe Materialnummer meherer Male in der Export Datei vorkommt. Die Mengen müssen zwar nicht zusammengezählt werden jedoch sollen sie alle aufgelistet werden.


Ich erwarte natürlich nicht, dass jemand den ganzen Code für mich erstellt, jedoch wäre ich für eine Weisung welche Funktionen ich zumindest benutzen soll, dankbar. Ich bin etwas überfordert ob ich hier mit SVerweis / Index oder was auch immer arbeiten muss.


Falls ich noch etwas nicht ganz klar sein sollte beschreibe ich das problem gern genauer.


Ich bedanke mich schonmal im Vorraus für eure Hilfe!

Betrifft: AW: VBA SVERWEIS? Daten selektiern 2 Datein
von: fcs
Geschrieben am: 18.09.2020 14:53:11

Hallo Heininger,

nachfolgend ein Makro zur Durchführung des Imports in die Belegblätter.
Das Makro fügst du am besten in einem allgemeinen Modul deiner Datei ein.

Hinweis:
Wenn du hier den Link zu einer hochgeladenen Datei in deiner Frage/Antwort einfügst, dann musst du vor und nach dem Link ein Leerzeichen einfügen oder den Link in einer separaten Zeile einfügen.
Der Link kann sonst nicht per Mausklick angesteuert werden.

LG
Franz
Sub prcImport_aus_Export_Datei()
  Dim wkbBeleg As Workbook, wkbExport As Workbook
  Dim wksBeleg As Worksheet, wksExport As Worksheet
  Dim zeile_B As Long, Zeile_E As Long
  Dim varLieferant
  
  If MsgBox("Jetzt Daten aus der Export-Datei in die Belegblätter übertragen?", _
      vbQuestion + vbOKCancel, _
      "I M P O R T   A U S    E X P O R T - D A T E I") = vbCancel Then Exit Sub
  
  Set wkbBeleg = ThisWorkbook
  
  'Export-Datei schreibgeschützt öffnen
  Set wkbExport = Application.Workbooks.Open(Filename:=ThisWorkbook.Path & Application. _
PathSeparator _
      & "Export_Forum.xlsx", ReadOnly:=True, addtomru:=False) 'Dateiname ggf. anpassen
  Set wksExport = wkbExport.Worksheets(1)
  
  For Each wksBeleg In wkbBeleg.Worksheets
    Select Case wksBeleg.Name
    Case "Datum->Summe->Drucken"
      'Diese Blätter überspringen , ggf. weitere Blattnamen ergänzen gerennt durch Komma
    Case Else
      'Blätter der Lieferanten
      Application.ScreenUpdating = False
      With wksBeleg
          'zu suchende Lieferantennummer
          varLieferant = .Range("B3").Text
          'letzte ausgefüllte Zeile im Beleg-Blatt
          zeile_B = .Cells(.Rows.Count, 1).End(xlUp).Row
      End With
      With wksExport
        For Zeile_E = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
          If .Cells(Zeile_E, 18).Text = varLieferant Then
            'Werte ins Bele
            zeile_B = zeile_B + 1
            wksBeleg.Cells(zeile_B, 1).Value = .Cells(Zeile_E, 1).Value 'Material
            wksBeleg.Cells(zeile_B, 3).Value = .Cells(Zeile_E, 9).Value 'Menge in ErfassME
          End If
        Next Zeile_E
      End With
      Application.ScreenUpdating = True
    End Select
    
  Next wksBeleg
  'Export-Datei wieder schliessen
  wkbExport.Close savechanges:=False
End Sub


Betrifft: AW: VBA SVERWEIS? Daten selektiern 2 Datein
von: Heininger
Geschrieben am: 21.09.2020 06:58:50

Guten Morgen Franz,

Sorry für die späte Antwort, hatte aber leider übers Wochenende nicht so viel Zeit ^^.
Danke für den Hinweis mit den Links, merke ich mir für die Zukunft!

Und VIELEN DANK für den Code. Funktioniert einwandfrei! Dank deiner Beschreibungen schaffe ich es sogar ihn nachzuvollziehen! Einfach Mega ! :D

Wünsche dir noch eine angenehme Woche !

Beiträge aus dem Excel-Forum zum Thema "VBA SVERWEIS? Daten selektiern 2 Datein "