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

Dropdown liste mit Makro kombinieren

Dropdown liste mit Makro kombinieren
07.10.2018 21:23:58
jinu
Hallo zusammen,
ich habe ein Problem bei dem ich nicht weiter komme und ihr mir bestimmt helfen könnt.
Folgende Ausgangssituation:
In Zelle A4 ist eine Dropdown Liste mit "A, B, C" als Auswahlmöglichkeit.
In D4:G8 sind Formel und Datenbankverknüpfungen. Automatische Berechnung / Aktualisierung ist deaktiviert.
Mein Makro soll nun folgende Schritte durchführen:
1. Auswahl aus der Dropdown Liste: "A" (später nach Schritt 4 dann nacheinander B und C)
2. Das Arbeitsblatt aktualisieren (F9), da die automatische Berechnung deaktiviert ist.
3. Das aktualisierte Blatt in einer neuen Datei unter einem neuen Namen zb. "Test_vA.xlsm" speichern.
4. In der neuen Datei den Bereich D4:G8 kopieren und als Werte einfügen.
5. Anschließend soll der Prozess mit der ursprünglichen Datei erneut beginnen und diesmal "B" aus der Dropdown Liste und zum Schluss dann "C" ausgewählt werden.
Es soll also aus einer "Masterdatei", die mit Formeln und Datenbanken verknüpft ist 3 zusätzlich neue Dateien ( Test_vA, Test_vB, Test_vC ) mit reinen Werten ohne Formeln entstehen.
Habt ihr eine Idee wie ein passendes Makro dazu aussehen könnte?
Vielen Dank und viele Grüße
Jinu

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown liste mit Makro kombinieren
07.10.2018 21:40:03
Sepp
Hallo Jinu,
in ein allgemeines Modul.
Ungetestet!
Modul Modul1
Option Explicit 
 
Sub createFile() 
  Dim strPath As String 
   
  strPath = "C:\" 'Pfad anpassen! 
  If Right(strPath, 1) <> "\" Then strPath = strPath & "\" 
   
  On Error GoTo ErrorHandler 
  Application.ScreenUpdating = False 
   
  With Sheets("Tabelle2") 'Tabellenname anpassen 
    If UCase(.Range("A4")) Like "[A-C]" Then 
      .Calculate 
      .Copy 
      ActiveWorkbook.Sheets(1).Range("D4:G8") = ActiveWorkbook.Sheets(1).Range("D4:G8").Value 
      Call ActiveWorkbook.SaveAs(strPath & "Test_v" & UCase(.Range("A4")) & ".xlsm", 52) 
      ActiveWorkbook.Close True 
    End If 
  End With 
 
ErrorHandler: 
  Application.ScreenUpdating = True 
End Sub 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
08.10.2018 10:15:53
jinu
Hi Sepp,
vielen Dank für die schnelle Antwort.
Das Makro funktioniert sehr gut, jedoch wird immer nur eine neue Datei erstellt, je nachdem was ich aus der Dropdown Liste auswähle.
Kann man in das Makro eine Schleife einbauen, sodass es die Dropdown Liste automatisch abarbeitet und ich nicht das Makro für jeden Punkt in der Liste neu starten muss?
Also das Makro wählt A aus, berechnet, speichert es in einer neuen Datei, kopiert den Bereich, fügt ihn als Werte ein, speichert und schließt die neue Datei. Anschließend wählt es B aus, berechnet, speichert es in einer neuen Datei usw. Zum Schluss dann noch mit C.
(Hoffe das ist so verständlich)
Vielen Dank und viele Grüße
Jinu
Anzeige
AW: Dropdown liste mit Makro kombinieren
08.10.2018 18:33:12
Sepp
Hallo Jinu,
kein Problem.
Sub createFilel()
  Dim strPath As String, strList As String, varItem As Variant
   
  strPath = "C:\"  'Pfad anpassen! 
  If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
   
  On Error GoTo ErrorHandler
  Application.ScreenUpdating = False
   
  With Sheets("Tabelle1") 'Tabellenname anpassen 
    strList = .Range("A4").Validation.Formula1
    For Each varItem In Split(strList, ";")
      .Range("A4") = varItem
      .Calculate
      .Copy
      ActiveWorkbook.Sheets(1).Range("D4:G8") = ActiveWorkbook.Sheets(1).Range("D4:G8").Value
      Call ActiveWorkbook.SaveAs(strPath & "Test_v" & UCase(.Range("A4")) & Format(Date, "_yyyy-mm-dd_") & ".xlsm", 52)
      ActiveWorkbook.Close True
    Next
  End With
 
ErrorHandler:
  Application.ScreenUpdating = True
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Allerdings würde ich das Datum im Format 'JJJJ-MM-TT' bevorzugen, dann kann man die Dateien auch danach sortieren.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
09.10.2018 09:51:34
jinu
Hi Sepp,
vielen Dank für die Anpassungen, ich hatte sie irgendwie übersehen.
Ich habe das Makro eben getestet. Das Kopieren und Einfügen funktioniert prima, das Abspeichern dagegen nicht mehr :/ Es wird zudem nur eine Datei mit dem Standardnamen Mappe1 erstellt und in beiden (also der ursprünglichen und der neuen) wird anschließend "#Wert!" in der Dropdownliste angezeigt. Das es zu jedem Wert in der Dropdownliste eine eigene Datei erstellt funktioniert noch nicht.
Herzlichen Dank und viele Grüße
Jinu
AW: Dropdown liste mit Makro kombinieren
09.10.2018 19:02:19
Sepp
Hallo Jinu,
dann zeig mal, wie du die Liste in A4 definierst!
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
09.10.2018 21:41:22
jinu
Hi Sepp,
ich habe mal eine Beispieldatei erstellt.
https://www.herber.de/bbs/user/124510.zip
Dein letztes Makro ist darin enthalten, die Range und Bezüge habe ich angepasst. (Dropdownliste in D31 und den zu kopierenden Bereich). Den Pfad müsstest du dann entsprechend noch ändern.
Vielen lieben Dank
Jinu
AW: Dropdown liste mit Makro kombinieren
09.10.2018 21:50:52
Sepp
Hallo Jinu,
warum schreibst du dann in der Ausgangsbeschreibung "In Zelle A4 ist eine Dropdown Liste mit "A, B, C" als Auswahlmöglichkeit.", wenn du einen Zellbezug als Liste hast?
Sub createFile()
  Dim strPath As String, rngVal As Range, varItem As Variant
   
  strPath = "C:\Users..."  'Pfad anpassen! 
  If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
   
  On Error GoTo ErrorHandler
  Application.ScreenUpdating = False
   
  With Sheets("Tabelle1")
    Set rngVal = Range(Replace(.Range("D31").Validation.Formula1, "=", ""))
    For Each varItem In rngVal
      .Range("D31") = varItem
      .Calculate
      .Copy
      ActiveWorkbook.Sheets(1).Range("F34:Q76") = ActiveWorkbook.Sheets(1).Range("F34:Q76").Value
      Call ActiveWorkbook.SaveAs(strPath & "Test_v" & UCase(.Range("D31")) & Format(Date, "_yyyy-mm-dd_") & ".xlsm", 52)
      ActiveWorkbook.Close True
    Next
  End With
 
ErrorHandler:
  Application.ScreenUpdating = True
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
10.10.2018 18:30:04
Jinu
Hi Sepp,
Sorry ich wusste nicht, dass es da Unterschiede gibt :(
Vielen Dank, es funktionier ohne Probleme.
Ich habe noch eine Frage. Ich wollte die neu entstandenen Dateien per Outlook verschicken, alle in einer separaten Email. Ich habe dazu folgende Code geschrieben. Für eine email und wenn ich den genauen dateipfad angebe funktioniert es. Gibt es auch eine elegantere Möglichkeit als den Code jetzt 5 mal zu kopieren? Und kann man die Dateien automatisch auswählen? Da jede Mail an unterschiedliche Adressen geschickt wird bleibt mir glaube ich nicht anderes übrig als den Code zu wiederholen oder?
Also um es zu verdeutlichen was ich beabsichtige:
Anhang 1 (die erste erstellte Datei) soll an Adresse 1 gehen.
Anhang 2 an Adresse 2 usw bis alle Dateien verschickt sind.
Vielen Dank und viele Grüße
Jinu

Sub createFile()
Dim strPath As String, rngVal As Range, varItem As Variant
Dim objOutlook As Object
Dim objMail As Object
strPath = "c:\...."  'Pfad anpassen
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
With Sheets("Tabelle1")
Set rngVal = Range(Replace(.Range("D31").Validation.Formula1, "=", ""))
For Each varItem In rngVal
.Range("D31") = varItem
.Calculate
.Copy
ActiveWorkbook.Sheets(1).Range("F34:Q76") = ActiveWorkbook.Sheets(1).Range("F34:Q76"). _
Value
Call ActiveWorkbook.SaveAs(strPath & Format(Date, "yyyy-mm-dd_") & "Two month rolling  _
Forecast - " & UCase(.Range("D31")) & ".xlsm", 52)
ActiveWorkbook.Close True
Next
End With
ErrorHandler:
Application.ScreenUpdating = True
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.display
.to = "asdf@yxcv.de"
.Subject = "Test Excel VBA"
.HTMLbody = "Dies ist ein Test" & "
" & .HTMLbody .Attachments.Add "C:..." 'Pfad anpassen! Kann man hier vielleicht mit strPath & Format(Date, _ "yyyy-mm-dd_") & "Two month rolling Forecast - " & UCase(.Range("D31")) & ".xlsm" arbeiten? End With End Sub

Anzeige
AW: Dropdown liste mit Makro kombinieren
10.10.2018 20:44:13
Sepp
Hallo Jinu,
dazu musst du nur die Mail-Adressen entsprechend der Auswahl in der Tabelle zuordnen und verwenden.
Siehe Beispiel: https://www.herber.de/bbs/user/124553.xlsm
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
11.10.2018 11:14:52
jinu
Hi Sepp,
vielen Dank, nach anfänglichen "Schwierigkeiten" läuft es :)
Ich dachte erst es funktioniert nicht richtig, da das Makro immer nur die erste Datei erstellt hat. Wenn ich es dann nochmal ausgeführt habe, hat es die erste Datei überschrieben, die erste Mail und die 2. Datei erstellt. Bei der dritten Durchführung wurden dann die ersten beiden Dateien überschrieben, 2 Emails und die 3. Datei erstellt. Irgendwann habe ich rausgefunden, dass es wohl an der Verbindung mit OneDrive liegt, dass der Upload den Prozess scheinbar stört. Nachdem ich OneDrive beendet hatte, funktionierte es problemlos.
Kannst du mir das mit der Zuordnung der Email zur Auswahl nochmal genauer erklären? Wie kann ich die Mailadressen zuordnen, wenn sie in einer anderen Zelle / auf einem anderen Tabellenblatt stehen?
Und wie kann ich den Text der Email formatieren (Umbrüche einfügen, Schriftgröße ändern und Signatur einfügen)?
Ich habe versucht die Zeile
  Call sendMail(strReceiver, "Ein Test", "Hallo das ist ein Test", strFileName)

mit "& vbLf &" oder "& Chr(10) &" zu ergänzen, hatte aber keine Auswirkungen.
Vielen lieben Dank.
Jinu
Anzeige
AW: Dropdown liste mit Makro kombinieren
11.10.2018 18:35:51
Sepp
Hallo Jinu,
wo stehen den die Adressen? Wie kann man den Bezug zur jeweiligen Aufgabe herstellen?
Den Text der Mail musst du per HTML-Tags formatieren!
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Dropdown liste mit Makro kombinieren
11.10.2018 22:13:32
Jinu
Hi Sepp,
Irgendwie stehe ich gerade auf der Leitung und auf dem Schlauch und weiß nicht was du mir damit sagen willst :/ wenn momentan in helle A4: Aufgabe1 steht dann zieht das Makro als Email Adresse den Wert aus Zelle B4. Diesen Schritt kann ich im Code nicht nachvollziehen und mir fällt nicht ein wie ich ihn ändern sollte dass er auf eine andere Zelle zugreift. Wahrscheinlich ist die Lösung simple aber ich sie vor lauter Wald den Baum nicht.
Das mit dem HTML Code werde ich morgen versuchen. Ich muss einfach Zwischen die "" des Textes einfügen?
Vielen Dank und viele Grüße
jinu
AW: Dropdown liste mit Makro kombinieren
11.10.2018 22:57:16
Sepp
Hallo Jinu,
in meinem Beispiel stehen die Mail-Adressen direkt neben der jeweiligen Aufgabe, somit ist der Zugriff einfach. Wenn die Adressen irgendwo auf einer anderen Tabelle stehen, dann muss man ja irgendwie eine Verbindung zwischen Aufgabe und Adresse herstellen können, deshalb meine Frage: "wo stehen die Adressen und wie erfolgt die Zuordnung".
 ABCDEF
1Gruß Sepp
2
3

AW: Dropdown liste mit Makro kombinieren
12.10.2018 23:32:56
Jinu
Hi Sepp,
Ich habe es mir nochmal angesehen, dabei ist mir aufgefallen, das meine Frage eigentlich überflüssig ist, da ich ja einfach die Aufgabe zusammen mit den Adressen verschieben kann falls ich die Adressen nicht in Spalte b haben möchte.
Auch das mit den HTML tags hat gut geklappt. Danke für den Hinweis:) Dazu hätte ich noch eine Frage. Weißt du den Code um eine in Outlook gespeicherte Signatur einzufügen?
Zudem wollte ich fragen ob man den Zielort auch an eine weitere Liste knüpfen kann. Also wenn ich z.b. in zelle A24 über Daten überprüfen eine Liste mit den 12 Monaten einfüge, das man dort den aktuellen Monat auswählt. Das Makro soll dann einen neuen Ordner mit den Namen des Vormonats anlegen. Ich wähle zum Beispiel Oktober aus, das Makro speichert dann die Dateien unter C:\Pfad...\2018September.
Zur Vereinfachung kann ich morgen noch eine beispieldatei hochladen falls sowas geht und es mein Problem anschaulicher macht.
Vielen Dank und viele Grüße
Jinu
Beispieldatei wäre gut! o.T.
13.10.2018 15:09:03
Sepp
 ABCDEF
1Gruß Sepp
2
3

AW: Dropdown liste mit Makro kombinieren
08.10.2018 11:05:04
jinu
Hi Sepp,
was ich noch fragen wollte, kann man beim Speichern der neuen Datei das aktuelle Datum mit aufnehmen,
dass die Datei z.B. "Test_vA_08-12-2018.xlsm" heißt?
Vielen Dank und viele Grüße
Jinu
AW: Dropdown liste mit Makro kombinieren
08.10.2018 16:58:30
Hajo_Zi
& UCase(.Range("A4")) & Format(Date,"DD-MM.YYYY") &

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Dropdown liste mit Makro kombinieren
08.10.2018 18:25:06
Jinu
Hallo Hajo,
Vielen Dank für deine Hilfe. So hatte ich es mir vorgestellt.
Jetzt habe ich nur noch das Problem, dass immer nur eine neue Datei erstellt wird, je nachdem was ich aus der Dropdown Liste auswähle. Mein Ziel war jedoch, dass das Makro die Liste automatisch durchgeht.
Kann man in das Makro eine Schleife einbauen, sodass es die Dropdown Liste automatisch abarbeitet und ich nicht das Makro für jeden Punkt in der Liste neu starten muss?
Also das Makro wählt A aus, berechnet, speichert es in einer neuen Datei, kopiert den Bereich, fügt ihn als Werte ein, speichert und schließt die neue Datei. Anschließend wählt es B aus, berechnet, speichert es in einer neuen Datei usw. Zum Schluss dann noch mit C.
Des Weiteren ist mir aufgefallen, dass ich die dropdown Liste nicht ändern kann. Wenn ich A-C ersetzte mit Gebiet1 Gebiet2 USA funktioniert das Makro nicht mehr. Habt ihr hierfür eine Idee?
Vielen Dank und viele Grüße Jinu

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige