Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SVerWeis Makro mit Dateiauswahl

SVerWeis Makro mit Dateiauswahl
25.01.2017 20:30:14
Mike
Hallo,
ich habe ein kleines Makro was automatisch einen SVerweis zwischen zwei verschiedenen Tabellen ausführt.
Die Herausforderung besteht die Dateien werden jeden Tag mit dem jeweiligen Datum gespeichert.
Gibt es eine Möglichkeit mit einem VBA Code den jeweiligen Dateiname in den Makrocode zu übertragen oder zweite Option ich wähle die Dateien vorher aus, hier sollte festgelegt werden welche Datei für was verwendet wird ?
Sub SVerWeis()
' SVerWeis Makro
Windows("24.01.2017.csv").Activate
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],[25.01.2017.xls]rptAbfDataArtikelLagerbestand!R1C1:R7764C6,4,FALSE)"
Selection.AutoFill Destination:=Range("C2:C200"), Type:=xlFillDefault
Range("C2:C200").Select
ActiveWindow.SmallScroll Down:=-186
Windows("Makrosteuerung.xlsm").Activate
End Sub

Die CSV - Datei ist Datei wo der SVVerweis ausgeführt wird .xls Datei ist die Matrix wo gesucht wird.
Morgen heißt die CSV Datei 25.01.17.csv und die .xls 26.01.17
Gruß Mike

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVerWeis Makro mit Dateiauswahl
25.01.2017 21:33:48
Dieter
Hallo Mike,
ich gehe davon aus, dass sich dein Makro in der Mappe "Makrosteuerung.xlsm" befindet.
Dann könntest du doch den folgenden Code verwenden:

Sub SVerWeis()
' SVerWeis Makro
Dim datCSV As String
Dim datXLS As String
Dim heute As Date
heute = Date
datXLS = Format$(heute, "dd.mm.yyyy") & ".xls"
datCSV = Format$(heute - 1, "dd.mm.yyyy") & ".csv"
Windows(datCSV).Activate
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],[" & datXLS & "]rptAbfDataArtikelLagerbestand!R1C1:R7764C6,4,FALSE)"
Selection.AutoFill Destination:=Range("C2:C200"), Type:=xlFillDefault
Range("C2:C200").Select
ActiveWindow.SmallScroll Down:=-186
Windows("Makrosteuerung.xlsm").Activate
End Sub
Viele Grüße
Dieter
Anzeige
AW: SVerWeis Makro mit Dateiauswahl
25.01.2017 22:15:59
Mike
Hallo Dieter,
vielen dank, funktioniert perfekt.
Kann ich das Makro was die SVerweis Anweisung beinhaltet noch verbessern ?
Damit es korrekt ausgeführt wird, muss ich in der CSV Datei die Zelle C2 anklicken das möchte ich umgehen, die Spalte soll automatisch aktiviert werden ohne das ich diese vorher anklicken muss.
Gruß Mike
AW: SVerWeis Makro mit Dateiauswahl
25.01.2017 22:59:18
Dieter
Hallo Mike,
das lässt sich machen. Das Programm könnte dann mit der bisherigen Funktionalität folgendermaßen aussehen:

Sub SVerWeis()
Dim datCSV As String
Dim datXLS As String
Dim heute As Date
Dim wbCSV As Workbook
Dim wsCSV As Worksheet
heute = Date
datXLS = Format$(heute, "dd.mm.yyyy") & ".xls"
datCSV = Format$(heute - 1, "dd.mm.yyyy") & ".csv"
Set wbCSV = Workbooks(datCSV)
Set wsCSV = wbCSV.Worksheets(1)
With wsCSV.Range("C2")
.Formula = _
"=VLOOKUP(B2,[" & datXLS & "]rptAbfDataArtikelLagerbestand!$A$1:$F$7764,4,FALSE)"
.AutoFill Destination:=wsCSV.Range("C2:C200")
End With
wsCSV.Activate
wsCSV.Range("C2:C200").Select
ThisWorkbook.Activate
End Sub

Du könntest auch die beiden involvierten Dateien per VBA öffnen. Falls das für dich interessant ist, dann melde dich bitte noch mal. (Antwort kommt aber erst morgen.)
Viele Grüße
Dieter
Anzeige
AW: SVerWeis Makro mit Dateiauswahl
26.01.2017 21:19:26
Mike
Hallo Dieter,
danke für deine Hilfe.
1.) Folgende Herausforderungen habe ich noch, die Matrixdatei wird aus einer Datenbank als Excel gespeichert. Um das Makro korrekt anzuwenden, müssen vorher in der Spalte A - Anführungszeichen entfernt werden. (Bsp. "Nummer")
2.) Beide Dateien werden immer im gleichen Ordner abgelegt, ich würde den Pfad im Makro gerne angeben und am besten das sich die beiden Dateien mit dem Marko öffnen.
Gruß Mike
AW: SVerWeis Makro mit Dateiauswahl
27.01.2017 22:00:06
Dieter
Hallo Mike,
das Programm könnte so aussehen:

Sub SVerWeis_2()
Dim datCSV As String
Dim datXLS As String
Dim heute As Date
Dim letzteZeile As Long
Dim pfad As String
Dim wbCSV As Workbook
Dim wsCSV As Worksheet
Dim wbXLS As Workbook
Dim wsXLS As Worksheet
Dim zeile As Long
Dim zf As String
heute = Date
datXLS = Format$(heute, "dd.mm.yyyy") & ".xls"
datCSV = Format$(heute - 1, "dd.mm.yyyy") & ".csv"
pfad = "C:\Herber\"
' 1. Arbeitsmappe datXLS öffnen
If Dir(pfad & datXLS) = "" Then
MsgBox Prompt:="Datei """ & pfad & datXLS & """ existiert nicht!", _
Buttons:=vbCritical
Exit Sub
End If
On Error Resume Next
Workbooks(datXLS).Close SaveChanges:=False
On Error GoTo 0
Set wbXLS = Workbooks.Open(Filename:=pfad & datXLS)
Set wsXLS = wbXLS.Worksheets("rptAbfDataArtikelLagerbestand")
' 2. Arbeitsmappe datCSV öffnen
If Dir(pfad & datCSV) = "" Then
MsgBox Prompt:="Datei """ & pfad & datCSV & """ existiert nicht!", _
Buttons:=vbCritical
Exit Sub
End If
On Error Resume Next
Workbooks(datCSV).Close SaveChanges:=False
On Error GoTo 0
Set wbCSV = Workbooks.Open(Filename:=pfad & datCSV)
Set wsCSV = wbCSV.Worksheets(1)
' 3. Bei datXLS Anführungszeichen entfernen
letzteZeile = wsXLS.Cells(wsXLS.Rows.Count, "A").End(xlUp).Row
For zeile = 1 To letzteZeile
If Not IsNumeric(wsXLS.Cells(zeile, "A")) And _
Len(wsXLS.Cells(zeile, "A")) >= 2 Then
zf = wsXLS.Cells(zeile, "A")
If Left$(zf, 1) = """" And _
Right$(zf, 1) = """" Then
zf = Mid$(zf, 2, Len(zf) - 2)
If Left$(zf, 1) = "=" Then
zf = "'" & zf
End If
wsXLS.Cells(zeile, "A") = zf
End If
End If
Next zeile
' 4. SVERWEIS setzen
With wsCSV.Range("C2")
.Formula = _
"=VLOOKUP(B2,[" & datXLS & "]rptAbfDataArtikelLagerbestand!$A$1:$F$7764,4,FALSE)"
.AutoFill Destination:=wsCSV.Range("C2:C200")
End With
wsCSV.Activate
wsCSV.Range("C2:C200").Select
ThisWorkbook.Activate
End Sub
Viele Grüße
Dieter
Anzeige
AW: SVerWeis Makro mit Dateiauswahl
28.01.2017 00:47:46
Mike
Hallo Dieter,
nochmals vielen Dank. Ich habe mich wahrscheinlich missverständliche ausgedrückt. Die beiden Dateien sind in verschiedenen Ordner aber hier wiederum immer im gleichen. Ich müsste also für jeden Datei den Pfad angeben.
Das habe ich gelöst in dem ich für die datCSV =pfad1 verwende.
Außerdem muss die SV-Verweis Formel wieder entfernt werden, ich habe dies manuell immer mit Werte kopieren erledigt.
Als VBA Code habe ich das mir überlegt.
'wertekopieren Makro
wsCSV.Activate
Range("C2:C200").Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Jetzt zum problem er öffnet die CSV - Datei falsch, alles ist in die erste Spalte verschoben, wenn ich diese manuell öffnet dann sieht alles korrekt aus.
Der SVerweis wird vielleicht dadurch nicht durchgeführt, in der Spalte C wird nur NV angezeigt. Es kann aber auch daran liegen das die Anführungszeichen in der MatrixTabelle nicht entfernt wurden. Hier nochmals genau wie diese in der Spalte angezeigt werden. (Bsp,="10000011")
Gruß Mike
Anzeige
AW: SVerWeis Makro mit Dateiauswahl
28.01.2017 00:58:48
Mike
Noch ein Hinweis, in der Zeile 1 gibt es eine Spaltenbezeichnung.
Gruß mike
AW: SVerWeis Makro mit Dateiauswahl
28.01.2017 17:02:18
Dieter
Hallo Mike,
eine deutsche Excel-Version erwartet eine csv-Datei, die als Trennzeichen das Semikolon hat. Eine solche Datei wird von Excel spaltengerecht geöffnet. Deine csv-Datei hat wahrscheinlich das Komma als Trennzeichen, es wäre dann eine englische csv-Datei, die bei uns aber auch häufig verwendet wird. Sie kann natürlich auch per VBA sauber geöffnet werden, man muss dann aber etwas anders vorgehen.
Ich denke, dass wir am einfachsten weiterkommen, wenn du mir für beide Dateitypen ein Beispiel hochlädst. Du kannst den Dateiinhalt beliebig verfremden, es muss nur die grundsätzlich Struktur erkennbar sein.
Wenn du in der Datei keine Formeln haben willst (die lassen sich ja sowieso nicht speichern), dann können wir die von SVERWEIS besorgten Werte auch direkt in die Datei schreiben.
Viele Grüße
Dieter
Anzeige

82 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige