Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
das (gerade) aktuelle Verzeichnis lässt sich mit der CurDir-Funktion ermitteln:
Debug.Print CurDir
gibt den Pfad im Direktfenster aus.
Gruß Uwe
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
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^^
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
Registriert seit: 24.08.2022
Version(en): 365, 2019
(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 Wikipedia, die Tafeln oder aktion-deutschland-hilft.de
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
26.08.2022, 10:07
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2022, 10:09 von BuschB.)
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^^
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
26.08.2022, 12:43
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2022, 12:43 von schauan.)
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)
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
26.08.2022, 14:26
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2022, 14:28 von schauan.)
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)
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
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
Registriert seit: 29.09.2015
Version(en): 2030,5
29.08.2022, 08:54
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2022, 09:02 von snb.)
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)
|