MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 09.01.2018, 22:19   #1
Captain-Nemo
MOF User
MOF User
Standard VBA - Dateiname aus Zellen bei "speichern unter" vorgeben

Hallo,

bei "speichern unter" soll zwecks einheitlicher Dateiverwaltung der Dateiname aus 2 Zellen kreiert werden.
  1. Leider geht Excel auch wenn man normal speichert zu "speichern unter".
  2. In Zelle D1 steht das Datum als "MMM JJJJ". Excel gibt bei "speichern unter" z.B. für "Okt 2017" "01.10.2017" aus, soll aber 2017-10 ausgeben.

"BeforeSaveAs" brachte, wie auch andere Versuche, keinen Erfolg. Und wie man in diesem Fall das Datum umformen soll, weiß ich erst recht nicht.

Zur Erklärung: Der endgültige Dateiname wird von der Excel-Vorlage vergeben. Danach braucht nur noch gespeichert zu werden.

Gruß
Uwe

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    On Error GoTo Fehler
    Application.EnableEvents = False
    Application.Dialogs(xlDialogSaveAs).Show ([A1] & " " & [D1])
    Cancel = True
Fehler:
    Application.EnableEvents = True
End Sub

Geändert von Captain-Nemo (09.01.2018 um 22:58 Uhr).
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 05:31   #2
Hajo_Zi
MOF Guru
MOF Guru
Standard

).Show (Format([A1]m"MMM.YYYY") & " " & Format([D1],"YYYY-MM"))

nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.

Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.

Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster, Test, Mappe, Beispiel, Fehler, Kalender usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.

GrußformelHomepage

__________________

Signatur in jedem Beitrag
m Forum kann der Beitrag als erledigt markiert werden. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Betriebssystem: Windows 10 - 64 Bit, Office 2016 - 32 Bit.
Hajo_Zi ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 06:43   #3
aloys78
MOF Meister
MOF Meister
Standard

Hallo Uwe,

Zitat:

bei "speichern unter" soll zwecks einheitlicher Dateiverwaltung der Dateiname aus 2 Zellen kreiert werden

Speichern unter - das geht auch aus dem Titel hervor.
Ich hätte dafür Saveas benutzt.

Außerdem
- was steht denn in A1 ?
- was bedeutet Zur Erklärung: Der endgültige Dateiname wird von der Excel-Vorlage vergeben. Danach braucht nur noch gespeichert zu werden.
- um welche Datei geht es: ThisWorkbook oder eine geöffnete 2. Datei

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 08:24   #4
Captain-Nemo
Threadstarter Threadstarter
MOF User
MOF User
Standard

Der Teufel steckt im aus zweierlei Gründen im Detail.

Zum Ersten: Danke Hajo. Dachte, ich hätte das so schon probiert.

Zum Zweiten: Habe jetzt gemerkt, dass, damit das Problem erledigt ist, schon beim Öffnen der Excel-Vorlage dieser Dateiname vorgeschlagen werden muss. Und dann soll beim ersten speichern als Dateiendung .xlsm stehen, also FileFormat=52.

Es geht dementsprechend um ThisWorkbook.
In A1 steht einfach der Name des Hauses, das die Datei erstellt. Das mit dem Dateinamen funktioniert. Aber, wie gesagt, es muss schon beim Öffnen der Dateiname vorgeschlagen werden, logisch. Daran hatte ich nicht gedacht.

Zitat:

- was bedeutet Zur Erklärung: Der endgültige Dateiname wird von der Excel-Vorlage vergeben. Danach braucht nur noch gespeichert zu werden.

Sorry, wollte das Ganze nur verdeutlichen, verwirrt aber eher.

Gruß
Uwe

Geändert von Captain-Nemo (10.01.2018 um 08:48 Uhr).
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 08:55   #5
aloys78
MOF Meister
MOF Meister
Standard

Hallo Uwe,

Zitat:

Habe jetzt gemerkt, dass, damit das Problem erledigt ist

Dann kannst Du ja das Thema jetzt schließen.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 09:15   #6
Captain-Nemo
Threadstarter Threadstarter
MOF User
MOF User
Standard

Nee, leider nicht, wenn du genau liest. Leider funktioniert das mit "Speichern unter" so einfach nicht, wenn man, was die Regel ist, nach "getaner Arbeit" die Datei schließt, kommt zwar die "Speichern unter"-Box, aber nicht mit dem vorgesehenen Dateinamen, sondern mit dem excelüblichen. Der erscheint nur in der Eingabezeile, wenn man händisch auf "Speichern unter" geht.

Kann denn das mit einem Workbook_Open-Code klappen? Dass die Vorlagen-Datei nicht mit Dateiname1 öffnet, sodern mit dem variablen "zellengenerierten" Namen?

Gruß
Uwe

Oder dass er auch im zweiten Fall, also wenn man die Datei schließen will, den Dateinamen kreiert. Allerdings generell nur beim ersten Mal abspeichern, falls jemand unbedingt die Datei anders benennen will.

Wenn man auf "Speichern unter" geht und keinen anderen Dateinamen vergeben will (dann müsste man ihn jedesmal neu eingeben, zumal die "Speicher unter"-Box sich auch öffnet, wenn man ganz normal auf speichern geht), funktioniert:

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    On Error GoTo Fehler
    Application.EnableEvents = False
    Application.Dialogs(xlDialogSaveAs).Show ([A1] & " " & Format([D1], "YYYY-MM"))
    Cancel = True
Fehler:
    Application.EnableEvents = True
End Sub

Geändert von Captain-Nemo (10.01.2018 um 09:49 Uhr).
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 10:49   #7
Captain-Nemo
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hab den Code gefunden:

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'  MsgBox "Datei-Format: " & Me.FileFormat   ' Testzeile
  Dim iFilterIndex As Integer
  If Me.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
    Application.EnableEvents = False
    Cancel = True
    If Val(Left(Application.Version, 2)) >= 12 Then 'Excel-Versionsprüfung
      'Excelversion 2007 und neuer
      Select Case Me.FileFormat
        Case 52             'xlOpenXMLWorkbookMacroEnabled - Excel 2007 mit Makros
          iFilterIndex = 2  'Standardmäßig xlsm  unter Excel 2007
        Case 56             'xlExcel8  - Excel 98 bis 2003
          iFilterIndex = 4  'Standardmäßig xls  unter Excel 2007
        Case Else
          iFilterIndex = 1  'Standardmäßig xlsx  unter Excel 2007
      End Select
      'Speichern unter Dialog anzeigen
      With Application.FileDialog(2)  '2 = msoFileDialogSaveAs
        .InitialView = 2              '2 = msoFileDialogViewDetails
        .FilterIndex = iFilterIndex
        If .Show <> False Then
          .Execute
        End If
      End With
    Else
      'Ältere Excelversionnen - SaveAs Dialog anzeigen
      Application.Dialogs(5).Show     '5 = xlDialogSaveAs
    End If
    Application.EnableEvents = True
  End If
End Sub
Leider schaff' ich's nicht, meinen aus Zellen generierten Dateinamen

Code:

([A1] & " " & Format([D1], "YYYY-MM"))
einzubinden. Dafür fehlen mir mal wieder die notwendigen Grundlagen.

Gruß
Uwe
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 13:09   #8
Captain-Nemo
Threadstarter Threadstarter
MOF User
MOF User
Standard

Jetzt muss ich es noch irgendwie hinkriegen, dass

- wenn beim Schließen bei nicht vorherigem abspeichern standardmäßig die "Speichern unter"-Dialogbox erscheint, auch dort in der Eingabezeile der generierte Dateiname erscheint
- schon beim erstmaligen speichern dies automatisch im .xlsm-Format geschieht

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Me.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
        On Error GoTo Fehler
        Application.EnableEvents = False
        Application.Dialogs(xlDialogSaveAs).Show ([A1] & " " & Format([D1], "YYYY-MM"))
        Cancel = True
Fehler:
        Application.EnableEvents = True
    End If
End Sub
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2018, 16:55   #9
aloys78
MOF Meister
MOF Meister
Standard

Hallo Uwe,

über 100 Clicks und noch kein Vorschlag - ich kann es verstehen.

Die verschiedenen Code-Schnipsel erhöhen für mich nur den Grad der Verwirrung.

Vielleicht wäre es besser, mal den für uns relevanten Ablauf vom Öffnen, Speichern und Schließen der Datei zu skizzieren.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2018, 04:59   #10
Captain-Nemo
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich hatte mich mit meinem Problem schon vor meinem ersten Post auseinandergesetzt. Durch das Verfassen selbiger kommen mir teilweise gute Ideen, so dass ich mich geärgert habe, dass man seine Beiträge nicht löschen kann. Allerdings ist mir mittlerweile eingefallen, dass entsprechendes editieren ja fast auf dasselbe hinaus laufen kann.

Also: Ich habe mir jetzt 2 Codes zusammengebastelt.

Der erste ist dafür da, dass, wenn man die excel-Vorlage das erste Mal abspeichert, der aus 2 Zellinhalten zusammengeschusterte Dateiname in die Eingabezeile gepflanzt wird. Ab dem zweiten Mal speichern nicht - Falls jemand seinen eigenen Dateinamen eingeben will. Funktioniert!

Der zweite funktioniert leidlich. Erstellt man sich mit der Vorlage eine neue Datei und will diese dann schließen ohne zwischendurch abgespeichert zu haben, fragt die eigene MsgBox ob man abspeichern will. Klickt man auf...
- Ja: Excel öffnet die "Speichern unter"-Dialogbox wie gewünscht, schließt aber die Datei nicht.
- Nein: Die Datei wird ebenfalls nicht geschlossen, sondern es erscheint das Fenster von Excel und stellt diesselbe Frage - ob man speichern will.
- Abbrechen: Es erscheint ebenfalls die Excel-Meldung.

Das ganze übrigens auch wenn es gar nichts zu speichern gibt! Ist die Datei aber einmal gespeichert, funktioniert alles normal, was ja logisch ist, es erscheint nur noch die Excel-Box.

Viel einfacher wäre natürlich, man würde statt dem zweiten Code Excel sagen, es soll, wenn wenn man in der standardmäßigen "Datei schließen"-Dialogbox auf Ja (speichern) klickt, bei "Speichern unter" den generierten Dateinamen einsetzen.

Gruß
Uwe

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Me.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
        On Error GoTo Fehler
        Application.EnableEvents = False
        Application.Dialogs(xlDialogSaveAs).Show ([A1] & " " & Format([J1], "YYYY-MM"))
        Cancel = True
Fehler:
        Application.EnableEvents = True
    End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ErrorCheckingOptions.BackgroundChecking = True
    If Me.Saved = False Then
        On Error GoTo Fehler
            Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?", vbYesNoCancel)
                Case vbYes
                Application.EnableEvents = False
                Application.Dialogs(xlDialogSaveAs).Show ([A1] & " " & Format([J1], "YYYY-MM"))
                Cancel = True
            End Select
Fehler:
        Application.EnableEvents = True
    End If
End Sub
Captain-Nemo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.