19.05.2025, 10:56 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2025, 10:58 von wirtzwiwi.)
Hallo zusammen, ich habe hier ein Programm mit VBA wo ständig ein Fehler gemeldet wir, ich denke es hat was mit dem Pfard zutun. in der Datei Jahres-Monats-ordner mit Dateien erstellen 15 gebe ich das Jahr und den Monat und dann soll er mir den Monat erstellen. Ich lade die Datei mal hoch vieleicht findet einer den fehler. Muß die Datei teilen weil sie sonst zu groß ist
Gurß wirtzwiwi Kann die dritte Datei leider nicht hochladen weil sie zu groß ist, aber die gehört dazu. was kann ich machen oder sie schicken
Private Const Dateipfad_LN_Muster As String = "H:\Dispo.-Krane und Tiefflader\Krane u. Tieflader\LN - Muster.xlsm" Private Const Dateipfad_Krane_Tieflader_und_Abstützplatten_vorlage As String = "H:\Dispo.-Krane und Tiefflader\Krane-Tieflader und Abstützplatten (vorlage).xlsm" Private Const Ordnerpfad_jahresüberordner As String = "H:\Dispo.-Krane und Tiefflader\Krane u. TiefladerKrane Tieflader" Private Jahresordner As String Private Monatsordnerpfad As String
Public Gesamtdateien As Integer Public Vortschritt As Integer
Public Sub Jahresordner_erstellen(Jahr As Integer) Dim OP As String
OP = Ordnerpfad_jahresüberordner & "Krane-Tieflader " & Format(Jahr, "0000")
' Jahresordner schauen ob vorhanden, wenn nicht dann erstellen. If Ordner_vorhanden(OP) = False Then MkDir OP End If
Jahresordner = OP & "\" End Sub
Public Sub Monat_erstellen(Jahr As Integer, Monat As Integer) Dim D_von As Date, D_bis As Date, D As Date, KW As Integer, Mem_KW As Integer, Datum As String, i As Integer Dim Pfad1 As String, Pfad2 As String, DE As String, WS As Worksheet, Wochentage As Variant, WT As Variant, x As Integer, W As Integer
D_von = DateSerial(Jahr, Monat, 1) For i = 1 To 7 KW = dt_Kalenderwoche(D_von) Mem_KW = dt_Kalenderwoche(D_von - i) If KW <> Mem_KW Then D_von = D_von - (i - 1) Exit For End If Next i
D_bis = DateSerial(Jahr, Monat + 1, 1) - 1 For i = 1 To 7 KW = dt_Kalenderwoche(D_bis) Mem_KW = dt_Kalenderwoche(D_bis + i) If KW <> Mem_KW Then D_bis = D_bis + (i - 1) Exit For End If Next i
vorab: Code kann man als Code o. PHP mit den entsprechenden Buttons darstellen. Zum Code:
Ein Leerzeichen hinter " Krane-Tieflader"?? Ist für Dateinamen ungünstig, besser wäre ein Unterstrich. Auch äöü in Dateinamen führen leicht zu Problemen.
Es heißt übrigens Fortschritt!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Zitat:Der Unterstrich hatte ich nur gemacht, das man sieht wer den Fehler macht.
Hat niemand beanstandet, ich habe kritisiert, dass da zuviel Leerzeichen in den Dateinamen sind. Im Übrigen sind die ganzen Bezeichnungen für mein Gefühl viel zu lang. Da kann man sich kürzere Namen einfallen lassen, die genauso nachvollziehbar sind.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
19.05.2025, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2025, 14:09 von snb.)
Man sollte Daten nicht splitten, doch in nur einem Arbeitsblatt speichern Ein Arbeitsblatt enthält 2^20 Zeilen (= Records); das reicht meistens.
Splitten von Datein in Arbeitsblättern, Dateien und Folders ist qua Automatisierung unprofessionell und entspricht noch immer das 'Papier'denken in Archiven, Laden, Mappen, usw..
Ein Database kann man beliebig filtern, sortieren usw. Erst dann benützt man die Möglichkeiten von Excel optimal.
19.05.2025, 15:55 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2025, 15:58 von snb.)
Und weniger Code im Userform Macromodul reicht schon:
Code:
Private Sub UserForm_Initialize() ComboBox1.List = [transpose(row(1:10)+year(today()))] ListBox1.List = Application.GetCustomListContents(3) End Sub
Code:
Private Sub CommandButton2_Click() For j = 0 To ListBox1.ListCount - 1 ListBox1.Selected(j) = CommandButton2.Caption = "Alle" Next CommandButton2.Caption = IIf(CommandButton2.Caption = "Alle", "Keine", "Alle") End Sub
Code:
Private Sub CommandButton1_Click() If ComboBox1.ListIndex > -1 Then mkdir ComboBox1 For j = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(j) Then MkDir ComboBox1 & "\" & Listbox1.List(j) Next End If
19.05.2025, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2025, 16:03 von Der Steuerfuzzi.)
(19.05.2025, 12:29)wirtzwiwi schrieb: Danke geht leider nicht
Was geht nicht? Mein Vorschlag? Edgars Vorschlag?
Es liegt mE an den Verzeichnis-Variablen und deren Inhalt. Anscheinend gibt es diese von Dir durch die Variablen aufgebauten Verzeichnisse nicht. Den genauen Aufbau Deiner Verzeichnisstruktur kennst nur Du, dementsprechend ist es schwer hier zu helfen!