Liebes Forum,
folgende Ausgangssituation:
Momentan verwende ich Excel um Angebote an Kunden zu senden. Wenn ich in Feld B3 eine Artikelnummer eingebe, wird mir in Feld E3 der passende Artikelname per SVerweis aus einer anderen Exceldatei eingefügt, welche den Artikelstamm enthält. Dies funktioniert für beliebig viele Zeilen und natürlich fülle ich auch mehrere Spalten mit Artikelinformationen aus dem Artikelstamm auf diese Art und Weise.
=WENN(B3>0;SVERWEIS(B3;'I:\...\Artikelstamm\[AktuellerArtikelstammAGH.xlsm]AGH Artikelstamm'!$B:$BW;67;FALSCH);"")
Durch das Einfügen der Sverweise mit Daten aus einer separaten Datei erstellt Excel automatisch eine Verknüpfung zur anderen Datei und meine Angebotsdatei lädt alle Daten der Artikelstammdatei in den Hintergrund.
Herausforderung:
Ich besitze auch die Möglichkeit den aktuellen Artikelstamm per ODBC direkt mit unserem Warenwirtschaftssystem zu verbinden (EXCEL Datenverbindung zu Arbeitsmappe). Der Artikelstamm wäre dann auch so aufgebaut, dass die erste Spalte die Artikelnummer enthält und weitere Spalten Artikelinformationen.
Beispiel Feldnamen:
ARTNR: Artikelnummer
ARBEZ1: Artikelbezeichnung1
ARBEZ2: Artikelbezeichnung2
ARLVP1: Unverbindlicher Verkaufspreis
Ich will nun nach wie vor in Excel in Spalte B Artikelnummern eingeben und würde mir gerne per VBA aus der Datenverbindung GDARTSTP die per Excel davor hergestellt wurde zu der Artikelnummer in der jeweiligen Zeile in Spalte C den Wert aus ARBEZ1 einfügen, in Spalte D den Wert aus ARBEZ2 und in Spalte E den Wert aus ARLVP1.
Der Code sollte per Schleife immer nur für die Artikelnummern laufen, die ich markiert habe. Analog verwende ich bisher folgenden Code um zugehörige Artikelbilder aus einem Verzeichnis in Spalte A einzufügen:
Sub Bilder_Einfügen_Markiert_Strg_Shift_Q()
On Error Resume Next
Dim Pfad As String
Pfad = "P:\...\300x300G1\"
For Each rw In Selection.Rows
'MsgBox rw.Value
rw.Select
With ActiveSheet.Pictures.Insert(Pfad & rw.Value & ".jpg")
.Top = rw.Offset(rowOffset:=0, columnOffset:=0).Top + 3
.Left = rw.Offset(rowOffset:=0, columnOffset:=-1).Left + 10
.Height = 105
End With
Next rw
End Sub
Für eine Lösung, wie man per VBA Daten einer Verbindung ausliest und in die entsprechenden Felder schreibt, wäre ich sehr dankbar. Es wäre dabei von Vorteil, wenn sich meine Angebotsdatei dafür nicht immer den kompletten Artikelstamm im Hintergrund laden muss.
Grüße
Andreas
|