Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

Werte ersetzten und abspeichern per VBA

Werte ersetzten und abspeichern per VBA
28.09.2020 10:23:44
Mike
Hallo Zusammen,
ich habe eine Datei, in der Planungsdaten eintragen muss für verschiedene Länder. (Insgesamt 128)
Ein liste dazu findet ihr in der Datei im Sheet "Input Data". Wichtig sind hier die Werte in den Spalten: [Country Code], [Country], [Region] und [Sales Region].
Dies Werte müssen immer in das Sheet "INFRASTRUCTE" eingetragen werden. Könnte man hierzu einen Makro schreiben, der die Daten Zeile für Zeile durch geht und die Werte in das Sheet "INFRASTRUCTE" einträgt und die Excel dann mit dem Country Name in einen separaten Ordner abspeichert und dies so lange macht, bis keine Daten mehr vorhanden sind?
Ich habe leichtes Wissen in VBA und habe es auch schon mit Makrorecorder probiert aber komme hier nicht weiter...
Könntet Ihr mir hier helfen?
Anbei noch die testdatei: https://www.herber.de/bbs/user/140485.xlsx
LG
MIKE

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

Betreff
Datum
Anwender
Anzeige
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 12:08:33
Yal
oha, Planungsaufgabe, mal wieder...
Hallo Mike,
gehe der bekannte Model-View-Controller Prinzip nach: trenne die Datenhaltung, Präsentation und Verarbeitung voneinander.
Idealerweise sind die Daten tabellarisch abgelegt, wie in Data_1 oder Data_2. Ein Sachverhalt pro Spalte. Nur niedrigste Granularität verwenden, also Land ja, Region nein. Darauf können per SVerweis die zusätliche Information einbezogen werden (Region). Es wäre "Verarbeitung Stufe 1".
Die Präsentation erfolgt über Pivottabelle (alle "=Summe(..)" raus!)
In der Pivottabelle können Aggregatsberechnung (u.a. Prozent vorgenommen werden). Es wäre "Verarbeitung Stufe 2".
Das Umgekehrt, spricht in der Präsentation Daten einzugeben, ist fehleranfällig und dementsprechend lästig.
Wenn die Komplexität weiter steigt, versuche mit BI-Tool, wie z.B. Jedox.
Viel Erfolg
Yal
Anzeige
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 13:15:26
Mike
Ok das verstehe ich leider nicht...:(
So sieht mein Makro per Aufnahme aus. Könnte ich diesen anpassen, sodass er das macht bis keine Daten mehr vorhanden sind die er nach der Reihenfolge kopieren kann? Daher immer eins nach unten uns es mit dem Ländernamen am ende der Datei abspeichert?
Sub test()
' test Makro
Range("A2").Select
Selection.Copy
Windows("20200925_Market Estimations_RegX_pilot.xlsx").Activate
Range("B5").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "[Country]"
Range("C5").Select
ActiveCell.FormulaR1C1 = "[Country Code]"
Application.WindowState = xlNormal
Windows("01_Input Data.xlsx").Activate
Range("A2").Select
ActiveCell.FormulaR1C1 = "DE"
Windows("20200925_Market Estimations_RegX_pilot.xlsx").Activate
ActiveCell.FormulaR1C1 = "DE"
Range("DE10:DE11").Select
Application.WindowState = xlNormal
Windows("01_Input Data.xlsx").Activate
Range("B2").Select
ActiveCell.FormulaR1C1 = "Germany"
Windows("20200925_Market Estimations_RegX_pilot.xlsx").Activate
Range("B5").Select
ActiveCell.FormulaR1C1 = "Germany"
Range("DE4").Select
Application.WindowState = xlNormal
Windows("01_Input Data.xlsx").Activate
Range("C2").Select
ActiveCell.FormulaR1C1 = "DEN"
Windows("20200925_Market Estimations_RegX_pilot.xlsx").Activate
Range("B4").Select
ActiveCell.FormulaR1C1 = "DEN"
Range("DF15").Select
Application.WindowState = xlNormal
Windows("01_Input Data.xlsx").Activate
Range("D2").Select
ActiveCell.FormulaR1C1 = "D(Nord) & Nordeuropa"
Windows("20200925_Market Estimations_RegX_pilot.xlsx").Activate
Range("B3").Select
ActiveCell.FormulaR1C1 = "D(Nord) & Nordeuropa"
Range("DD6").Select
ChDir "C:\Users\xxx\Desktop\Bottomup Templates"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\xxx\Desktop\Bottomup Templates\20200925_Market Estimations_RegX_Germany.xlsx"  _
_
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Windows("01_Input Data.xlsx").Activate
Application.WindowState = xlNormal
Windows("20200925_Market Estimations_RegX_Germany.xlsx").Activate
End Sub

Anzeige
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 16:03:29
Yal
ach so. Jetzt verstanden: für jede Eintrag im Blatt "Input Data", die Felder von "Infrastructure" anpassen und eine Kopie im Zielverzeichnis speichern.
Sub test()
' test Makro
Dim Qw As Worksheet 'Quelle
Dim Zw As Worksheet 'Ziel
Dim Nw As Workbook 'neue
Dim Z
Set Qw = ThisWorkbook.Worksheets("Input data")
Set Zw = ThisWorkbook.Worksheets("Infrastructure")
For Each Z In Qw.Range("A1", Qw.Range("A1").End(xlDown)).Cells
Zw.Range("B3") = Z.Offset(0, 3).Value '[Sales Region], spalte 4
Zw.Range("B4") = Z.Offset(0, 2).Value '[Region], Spalte 3
Zw.Range("B5") = Z.Offset(0, 1).Value '[Country], Spalte 2
Zw.Range("C5") = Z.Value '[Country Code], Spalte 1
Set Nw = Zw.Copy
Nw.SaveAs _
Filename:="C:\Users\xxx\Desktop\Bottomup Templates\20200925_Market  _
Estimations_RegX_" & Z.Offset(0, 1).Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Nw.Close
Next
End Sub
Bei erste Versuche, vielleicht die Scheife auf ein Paar Element beschränken...
    For Each Z In Qw.Range("A1:A5").Cells
wie immer ohne Gewähr
Viel Erfolg
Yal
Anzeige
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 17:24:13
Mike
Hmm, leider bekomme ich bei:
Filename:="C:\Users\xxx\Desktop\Bottomup Templates\20200925_Market _
Estimations_RegX_" & Z.Offset(0, 1).Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
einen Fehler.
Wie gesagt ich kenne mich mit VBA nicht wirklich aus :(((
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 17:28:33
Yal
Was für ein Fehler?
Hast Du xxx in einem richtigen Verzeichnis zurückgeändert?
Kommt diese Fehler bereits bei dem ersten Durchlauf der Schleife, oder bei einem bestimmte Wert?
...
AW: Werte ersetzten und abspeichern per VBA
28.09.2020 20:22:24
Mike
Ja Habe ich, er erscheint immer: Fehler beim kompilieren und der Text erscheint in rot
AW: Werte ersetzten und abspeichern per VBA
29.09.2020 09:19:06
Yal
Hallo Mike,
zwischen "Market" und "Estimation" ist einen Zeilensprung eingefügt worden.
Ändere in
        Nw.SaveAs _
Filename:="C:\Users\xxx\Desktop\Bottomup Templates\20200925_Market " & _
"Estimations_RegX_" & Z.Offset(0, 1).Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Viel Erfolg
Yal
Anzeige
AW: Werte ersetzten und abspeichern per VBA
30.09.2020 10:06:27
Mike
Hallo Yal,
leider klappt es noch nicht, es erscheint immer: Fehler beim kompilieren:

Function oder Variable erwartet. Funktioniert es denn bei dir?
Den User habe ich natürlich geändert...

Sub Test()
Dim Qw As Worksheet 'Quelle
Dim Zw As Worksheet 'Ziel
Dim Nw As Workbook 'neue
Dim Z
Set Qw = ThisWorkbook.Worksheets("Input data")
Set Zw = ThisWorkbook.Worksheets("Infrastructure")
For Each Z In Qw.Range("A1", Qw.Range("A1").End(xlDown)).Cells
Zw.Range("B3") = Z.Offset(0, 3).Value '[Sales Region], spalte 4
Zw.Range("B4") = Z.Offset(0, 2).Value '[Region], Spalte 3
Zw.Range("B5") = Z.Offset(0, 1).Value '[Country], Spalte 2
Zw.Range("C5") = Z.Value '[Country Code], Spalte 1
Set Nw = Zw.Copy
Nw.SaveAs _
Filename:="C:\Users\xxx\Desktop\Bottomup Templates\20200925_Market " & _
"Estimations_RegX_" & Z.Offset(0, 1).Value & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Next
End Sub

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige