Excel VBA Speichern unter...?

1 Antwort

ActiveWorkbook.SaveCopyAs ("Tabellenvorlage" & InputBox("Dateinamen bitte eingeben: ") & ".xlsx")

Das speichert dann eine Kopie der Datei (ohne die Makros)

Wenn das Makro direkt beim Öffnen der Datei verwendet werden soll, muss das im VBA Editor zu "DieseArbeitsmappe" abgelegt werden:

Private Sub Workbook_Open()
ActiveWorkbook.SaveCopyAs ("Dateivorlage" & InputBox("Dateinamen bitte eingeben: ") & ".xlsx")
MsgBox "Dateivorlage wurde angelegt. Diese Datei wird nun geschlossen"
ActiveWorkbook.Close
End Sub

Ich würde es über die Kopie lösen. Wenn die Datei, in der das Makro steht, selbst genutzt wird, dann wird bei jedem Öffnen wieder das Makro durchlaufen. Man könnte dann zwar abfragen, ob der Dateiname verändert wurde, aber richtig praktisch ist das aus meiner Sicht nicht.

Wow super, danke. 
Weisst du auch, wie ich vorab den Speicherpfad angeben kann? 

Jetzt hab ich die Testtabelle.xlsm im Verzeichniss "Dokumente\Tabelle". Es speichert aber im Ordner "Dokumente" ab, also einen Unterordner und die neue Datei soll aber im selben Ordner sein. 

0
@DJBaem

Habs schon :) Danke dir :)

0
@DJBaem

wenn die Kopie immer genau da landen soll, wo auch das Original liegt, wäre es so möglich

namenserweiterung = InputBox("Bitte den Dateinamen eingeben:")
ActiveWorkbook.SaveCopyAs (ActiveWorkbook.Path & "\tabellenvorlage" & namenserweiterung & ".xlsx")
MsgBox "Dateivorlage wurde angelegt. Diese Datei wird nun geschlossen"
ActiveWorkbook.Close

Du kannst den Pfad, wenn es ein fester Wert sein soll, sonst einfach bei "tabellenvorlage" eintragen: "c:\users\hugo\vorlage" & ...

2
@Ninombre

Ich hab das Ganze jetzt so gemacht und es haut hin. Danke für deine Hilfe :)

Private Sub Workbook_Open()


Dim sPfad As String

sPfad = "C:\Users\DjBae\Documents\Tabelle\"

Application.Visible = False

ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.") & ".xlsm")

frmVL.Show

End Sub
0
@DJBaem

Was allerdings doof ist, selbst wenn ich auf "Abbrechen" klicke, wird eine neue Datei erstellt, anstatt dass eine Fehlermeldung kommt oder so. :/

0
@DJBaem

dann musst du das noch getrennet abfragen:

Dim sPfad, namenszusatz As String

sPfad = "C:\Users\DjBae\Documents\Tabelle\"

namenszusatz = InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.")
Application.Visible = False

If namenszusatz = "" Then Exit Sub

ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & namenszusatz & ".xlsm")

Das Makro wird so allerdings auch später immer beim Öffnen durchlaufen und will einen neuen Namen. Um das abzufangen, kannst Du direkt zu Beginn den Namen prüfen

if activeworkbook.name<>... then exit sub.

bei den... muss den Name der Vorlage stehen. D.h. wenn die Datei schon einen Namenszusatz bekommen hat, wird das Makro beendet.

1
@Ninombre

Hat perfekt geklappt, danke :) 

Eine Frage habe ich aber noch:
Aktuell wird ja direkt beim Öffnen nach dem Name gefragt, sodass ja direkt eine neue Tabelle erstellt wird, in der man arbeitet.

Kann man hier irgendwas machen, sodass nachdem die neue Datei erstellt wurde, dieses Makro automatisch im neuen Sheet gelöscht wird?

Weil nehmen wir mal an, dass ich jetzt fertig bin mit meiner Arbeit in der Datei "Testtabelle_Benny.xlsm" zu arbeiten und schließe sie..
Will ich sie dann aber wieder öffnen, werde ich klarer weise wieder nach einem Name gefragt und arbeite automatisch in einer neuen Tabelle.

Kann man hier also irgendwie dafür sorgen, dass die neue Datei dieses Makro nicht ausführt?

LG
Benny

0
@DJBaem

Wenn Du die Makros in der neuen Datei nicht brauchst, dann speicher die Kopie einfach als xlsx ohne Makro ab

Dim sPfad, namenszusatz As String
sPfad = "C:\Users\DjBae\Documents\Tabelle\"
namenszusatz = InputBox _
("Bitte gib deinen Name ein." & vbLf & vbLf & _
"Es wird automatisch eine neue Datei erstellt, welche mit '_DEINEM NAME' endet.")
Application.Visible = False
If namenszusatz = "" Then Exit Sub
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs sPfad & ("Testtabelle_" & namenszusatz & ".xlsx")
Application.DisplayAlerts = True

0
@Ninombre

Als xlsx kann ichs nicht speichern, da ja andere Makros in der Mappe sind, die auch später noch genutzt werden müssen. :/

0

Excel SUMMEWENNS nach Inhalt einer Zelle suchen lassen?

Guten Tag,

ich versuche momentan verzeweifelt folgendes mit Excel:

Es gibt eine Übersichtsdatei in der unter Anderem Angaben zu Projektnummer+Bezeichnung, Namen und Stunden gibt.

Projektnummer - Name - Stunden

Nun habe ich einem anderen Tabellenblatt eine Auswertungsübersicht geschaffen, in der jetzt folgendes ausgewertet werden soll:

In der Zelle E3 trage ich die Projektnummer ein (z. B. 4-15-160), nun will ich mit der SUMMEWENNS Funktion in der vorgenannten Tabelle auf Blatt 1 eine Suche auslösen, die mir die Stunden angibt, wenn die Projektnummer aus E4 und der Name, den ich auch in der Auswertung angebe. Dies klappt soweit auch. Jedoch habe ich das Problem, dass die Projektnummer die ich in der Auswertung eingebe, jediglich die Nummer ist. In der Tabelle auf Blatt 1 steht hier auch noch eine Bezeichnung bei, also z. B. [4-15-160] Test, ABCDE.

Nun soll die SUMMEWENNS also schauen, ob die Projektnummer in der Projektbezeichnung enthalten ist und mir anhand dessen die Auswertung geben, sodass ich nicht die genaue Projektbezeichnung eingeben muss.

Es müsste also geschaut werden, ob z. B. "4-15-160" in der Matrix enthalten ist.

Folgend die derzeitige Funktion. (SHEET ist das erste Blatt; Spalte D der Name, Spalte I die Projektnummer+Bezeichnung und Spalte V die Stunden)

=SUMMEWENNS(Sheet!$V$8:$V$999;Sheet!$I$8:$I$999;INDEX(Sheet!I8:I999;VERGLEICH(E3;Sheet!I8:I999;0);Sheet!I8:I9999);Sheet!$D$8:$D$999;B9)

Ich danke Euch vielmals im Voraus!!!

...zur Frage

VBA UserForm in Tabelle einbinden und beim Öffnen der Tabelle automatisch anzeigen?

Hallo zusammen,

an die Excel und VBA Fachleute, ich habe ein kleines Programm geschrieben mit dem ich aus zahlreichen Tabellen mir Werte abhole und überprüfe ob gewisse Tabellen existieren, wenn nicht dann wird ein entsprechender Status eingetragen.

Sprich dieses Fenster besteht nur aus einem aktualisieren Button und ein paar Übersichtstextfeldern, die sich "noch" aus der aktuellen Tabelle die Werte abholen und visualisiert darstellen.

Nun möchte ich eigentlich nichts anderes haben als dieses Fenster / UserForm automatisch beim öffnen der Tabelle anzeigen zu lassen und zwar so, dass ich sowohl noch Eintragungen in der Tabelle machen kann, als auch den Aktualisieren Button anklicken kann.

Dazu habe ich folgenden Code schon einmal gefunden, ich bin aber überzeugt davon, dass ich ihn irgendwo an die Falsche stelle einfüge.

Mein gesamter Code steht eigentlich im Click Event des Aktualisieren Buttons. Also habe ich über dieses Click Event folgenden Code geschrieben

Option Explicit
Sub Workbook_Open() 
Form1.Show vbModeless 
Worksheets("Tabelle1").Activate
End Sub

Ich freue mich über helfende Worte und vielen Dank im voraus.

Gruß Gipfelstürmer

...zur Frage

wie funktionert der Wverweis als VBA Code in Excel?

Hi Leute

Ich bin gerade dabei eine Tabelle in Excel mit VBA zu automatisieren.

Doch nun hänge ich an einem Wverweis den ich gerne in Excel ausführen möchte.

Es gibt eine Tabelle in der eine Bedingung abgefragt wird dort wird dann, wenn die Bedingung eintrifft, in der selben Zeile das Suchkritererutum festgelegt.

Und zwar ist dies eine ID, mit welcher dann in einer anderen Tabelle ein Name gesucht wird.

der gefundene Name soll dann in eine Tabelle 3 eingetragen werden.

Tabelle2.Range("B65536").End(xlUp).Offset(1, 0).Value = WorksheetFunction.HLookup([A49], Sheets("Tabelle7").[A1:ZZ50], 3, False)

das ist die Anweisung die eintritt wenn die Bedingung war ist und der Name gesucht und eingetragen werden soll.

Das Problem ist nur das irgendwas hier nicht stimmt und ich komm einfach nicht drauf. Es liegt aufjedenfall an der Funktion nach dem " = " also dem Wverweis.

Habt ihr eine Idee ?

...zur Frage

Excel Tabelle automatisch aktualisieren?

Ich stehe vor einem Rätsel. Ich habe eine Excel-Tabelle nach dem Alphabet sortiert.

Gibt es eine Möglichkeit, die Tabelle so zu "formatieren," dass sie sich automatisch aktualisiert, sobald ich unten einen neuen Wert eintrage?

...zur Frage

Exif-Daten durch Excel(VBA)?

Hallo, ich habe eine Datenbank mit Fotos in Excel erstellt. Jetzt möchte ich aber, dass das Datum das Datum der Aufnahme ist, also das Datum, das in den Exif-Daten der Bilder angegeben ist. Ich habe die Funktion .DateTimeOriginal gefunden, aber habe gelesen, dass diese Funktion nicht in VBA arbeitet, da sie aus einer anderen Sprache, VB .NET, ist und in Visual Basic Express angewendet werden kann. Gibt es andere Möglichkeiten die Exif-Daten rauszuleiten durch VBA ?

...zur Frage

Zellen mit gleichem Inhalt pro Spalte automatisch verbinden ?

Hallo Community, möchte gerne alle Zellen gleichen Inhalts pro Spalte automatisch verbinden lassen (Inhalte müssen, wie bei Excel üblich nur einmal erhalten bleiben). Später soll also der Konfernzname, das Datum und der Ort nur noch einmal pro Konferenz auftauchen. Die Teilnehmer und ihre Beiträge könnte man dann zwar auch noch verbinden, aber hier müssten natürlich die ganzen Zellinhalte erhalten bleiben (was Excel üblicherweise nicht macht). Ist wahrscheinlich nur mit VBA möglich oder? Danke im Vorraus

Bild siehe Anhang

...zur Frage

Was möchtest Du wissen?