Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Speichern als per UserForm / Letztes Blatt nicht drucken
#31
Hallo,

das (gerade) aktuelle Verzeichnis lässt sich mit der CurDir-Funktion ermitteln:
Debug.Print CurDir
gibt den Pfad im Direktfenster aus.

Gruß Uwe
Antworten Top
#32
ah ok, kann ich ja zum Spaß mal machen, werd es aber in meinem Fall so lösen das ich einfach meine save_path.Value in die Dir mit einbau, woanders sollten die Dokumente später eh nicht gespeichert sein bzw wenn dann nur als Kopie. aber Danke^^
Antworten Top
#33
Fortsetzung in:
Speicherfunktion läuft problemlos, gibt trotzdem False zurück (clever-excel-forum.de)
Antworten Top
#34
(26.08.2022, 09:21)BuschB schrieb: Fortsetzung in:
Speicherfunktion läuft problemlos, gibt trotzdem False zurück (clever-excel-forum.de)

nein, ich denke nicht. So ein Themengehopse erzeugt nur Chaos. Bleibe hier, hier haben sich nun schon genug in dein Projekt eingearbeitet und die Fragen haben mit dem anderen Thema nichts zu tun.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#35
Ja und nein, und ja... also im Prinzip hast du völlig recht, gehopse ist mist, aber da ich in dem anderen Thread Lösungen für Teilprobleme dieses Threads habe (geht ja auch in beiden um dasselbe Projekt) dachte ich mir dort weiter zu machen, da dort der aktuellste Stand ist... Natürlich könnte ich hier auch den aktuellen Stand von dort rüber hohlen und den ausgelagerten Thread abschließen...Aber eigentlich müsste ich das Thema neu benennen um den Umfang den der Inhalt ja bereits angenommen hat vollständig zu erfassen...
Wie dem auch sei, wenn du drauf bestehst kopiere ich den letzten Stand inklusive der Fragen und Probleme aus dem sekundären Thread hier auch noch rein und lass den anderen auslaufen, mir ist relativ egal welchen von beiden ich schließe, Hauptsache ich hab am Ende nur einen.

So, zur allgemeinen Zufriedenheit doch in diesem Thread weiter:
Ich hab hier im save_as:
Code:
Code:
Option Explicit
Private Sub cancel_Click()
    MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
    Sheets("Vorl. Blatt+").Visible = xlSheetVisible
    Unload Me
   
End Sub

Private Sub finished_Click()
    Sheets("Vorl. Blatt+").Visible = xlSheetVeryHidden
    strDateiname = save_name.Value & ".xls"
If speicherDatei(ActiveWorkbook, strDateiname) = True Then
    Kill (save_path.Value & save_name.Value & ".xlsm")
    Unload Me
End If

End Sub

Private Sub send_Click()
    strDateiname = save_name.Value & ".xls"
If speicherDatei(ActiveWorkbook, strDateiname) = True Then
    Sheets("Vorl. Blatt+").Visible = xlSheetVeryHidden
    strDateiname = save_name.Value & ".xlsm"
If speicherDatei(ActiveWorkbook, strDateiname) = True Then
    With send_mail
        If .Visible = False Then
            .Show
        End If
    End With
    Unload Me
End If
End If

End Sub

Private Sub UserForm_Initialize()
    wbkname = ActiveSheet.Range("C12").Value & ActiveSheet.Range("I12").Value & ActiveSheet.Range("O12").Value & ActiveSheet.Range("U12").Value & ActiveSheet.Range("AA12").Value & ActiveSheet.Range("AG12").Value & ActiveSheet.Range("AM12").Value & ActiveSheet.Range("AS12").Value & ActiveSheet.Range("AY12").Value & ActiveSheet.Range("BE12").Value
    save_path.Value = Sheets("Blatt 1").Range("DC12").Value
If Sheets("Blatt 1").Range("DD12").Value <> "" Then
    save_name.Value = Sheets("Blatt 1").Range("DD12").Value
Else
    save_name.Value = "Schaltprogramm " & wbkname & " " & Sheets("Blatt 1").Range("AF20").Value & " " & Sheets("Blatt 1").Range("AF22").Value
End If
   
End Sub

Private Sub work_in_progress_Click()
    strDateiname = save_name.Value & ".xlsm"
If speicherDatei(ActiveWorkbook, strDateiname) = True Then
    Unload Me
End If

End Sub

Function speicherDatei(ByVal wkb As Workbook, ByVal strDateiname As String) As Boolean
If save_name.Value = "" Then
    MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
    Exit Function
Else
If save_path.Value = "" Then
    MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben haben.", , "Abbruch"
    Exit Function
Else
    checkname = Dir(save_path.Value & "*" & wbkname & "*", vbReadOnly)
If checkname <> "" Then
    If checkname <> save_name.Value & ".xls" Then
        If checkname <> save_name.Value & ".xlsm" Then
            datei_exist.Show
            If Sheets("Blatt 1").Range("DB12").Value = "1" Then
                Unload Me
                Exit Function
            End If
        End If
    End If
End If
With wkb
    If Right(save_path.Value, 1) <> "\" Then save_path.Value = save_path.Value & "\"
    With .Sheets("Blatt 1")
        .Unprotect
        .Range("DB12").ClearContents
        .Range("DC12").Value = save_path.Value
        .Range("DD12").Value = save_name.Value
        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
    End With
    .SaveAs save_path.Value & strDateiname
End With
    speicherDatei = True
    MsgBox "Die Datei wurde unter " & save_path.Value & strDateiname & " gespeichert.", , "OK"
End If
End If

End Function
eine Dir eingebaut die mir in einer anderen UserForm, datei_exist:
Code:
Code:
Option Explicit
Private Sub datno_Click()
    With ActiveWorkbook.Sheets("Blatt 1")
        .Unprotect
        .Range("DB12").Value = 1
        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
    End With
    With save_as
        If .Visible = False Then
            .Show
        End If
    End With
    Unload Me
   
End Sub

Private Sub datverg_Click()
    Dim ergebnis
    Dim aufruf As String
        aufruf = "cmd " & DatName.Value
        ergebnis = Shell(aufruf, vbNormalFocus)
        MsgBox ergebnis & "zum Vergleich geöffnet."
    Next

End Sub

Private Sub datyes_Click()
'    Kill (checkname)
    Unload Me

End Sub

Private Sub UserForm_Initialize()
    DatNr.Value = wbkname
With DatName
    .Clear
    .ColumnCount = 10
    .List = checkname
End With

End Sub
bereits existierende Dateien mit derselben Dokumentennummer im Namen auflisten soll und mir die Optionen zur Verfügung stellen soll:
Die Dateien zu öffnen und zu Vergleichen.
Sowie:
  Die Dateien zu löschen und die Speicherfunktion fort zu setzen.
  Oder:
  Die Daten zu behalten und den gesamten Speichervorgang vollständig ab zu brechen, auch das Speichern welches Initial das save_as triggert:
Code:
Code:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, cancel As Boolean)
With save_as
    If .Visible = False Then
        .Show
    End If
End With

End Sub

Private Sub Workbook_BeforePrint(cancel As Boolean)
    Sheets("Vorl. Blatt+").Visible = xlSheetVeryHidden

End Sub
Momentan ist es aber noch nicht dazu in der Lage die Dateien in der ListBox DatName zu zeigen, geschweige denn sie zu öffnen, hat da jemand eine Idee was ich vergessen habe, wo mein Fehler liegt?

Danke schonmal^^
Antworten Top
#36
Hallöchen,

in Deinen Codes habe ich nicht gesehen, wo Du die Listbox füllst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#37
Das hab ich hier mit drin: (in dem Vertrauen darauf das das so geht, aber keine Ahnung, hab noch nie mit den Dingern gearbeutet xD)
Code:
Private Sub UserForm_Initialize()
    DatNr.Value = wbkname
With DatName
    .Clear
    .ColumnCount = 10
    .List = checkname
End With

End Sub
Antworten Top
#38
Hallöchen,

schaue mal, was Du in checkname stehen hast ...

Wenn Du mehrere Einträge in einem Rutsch in eine Listbox übertragen willst, dann sollte es ein entsprechend gefülltes Array sein.
Checkname ist ein String, also genau ein "Eintrag"

Einen einzelnen Eintrag fügt man im Prinzip so hinzu:
ListBox1.AddItem "Eintrag"
oder
ListBox1.AddItem myVariable

und hättest Du doch welche in einem Array gesammelt, dann
ListBox1.List = myArray
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#39
nenee checkname ist Variant, nicht String, aber ich glaub Variant ist auch nicht richtig...
Code:
Public wbkname As String
Public strDateiname As String
Public checkname As Variant
Antworten Top
#40
Code:
Private Sub UserForm_Initialize()Private Sub UserForm_Initialize()
   DatNr.Value = wbkname

  With DatName
    .Clear
    .ColumnCount = 10
    .List = checkname
  End With
End Sub
Wenn Datname ein Listbox/Combobox ist;

1. ist .clear völlig, 100% ganz überflüssig, weil ein Listbox/combobox in einem Userform am Anfang (Initialize) immer leer ist.
2. sollten Eigenschaften wie .columncount immer im Design Mode bestiimt werden und nicht im Initialize Prozedur
3. wenn man ein Variabele deklariert, ist diese leer; man kann ein ListBox/combobox keine leere Variabele zuweisen; man sollte die Variable mal erst füllen.
4. verzichte immer auf überflüssigen Variabelen.

Code:
Private Sub UserForm_Initialize()
  Datnr="Sheet1"
  Datname.list=application.getcustomlistcontents(2)
End Sub

5. Ich möchte nur hinzufügen: Grundlagen, Grundlagen, Grundlagen. (VBA-Buch, VBA Kurs, kein Trial & Error)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste