Clever-Excel-Forum

Normale Version: Speichern als per UserForm / Letztes Blatt nicht drucken
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8
Hallo,

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

Gruß Uwe
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^^

26865

(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.
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^^
Hallöchen,

in Deinen Codes habe ich nicht gesehen, wo Du die Listbox füllst.
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
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
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
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)
Seiten: 1 2 3 4 5 6 7 8