Hallo Lukas!
Wie gestern schon geschrieben, passt einiges am ersten Entwurf deines Codes so nicht. Eine Kleinigkeit ist mir eben noch aufgefallen. Um dir die Zeit bei google zu ersparen :-) , hier mal eine Version die funktioniert. Da ich mit deiner Range nicht ganz klar kam, bin ich von ausgegangen, dass in Spalte A die Namen stehen und Spalte B das zugehörige Datum. Der Code geht dabei von Zeile 1 in A bis zum letzten Eintrag durch. Wenn ein Name drin steht und das Datum auch als Datum interpretiert werden kann, wird das Datum geschrieben. Das Datum in deiner Datei kann dabei im normalen Format sein (11.12.2015). Der Tausch zu YYYY/MM/DD erfolgt im Code selber. Fehlerhafte Einträge werden ignoriert. Beim Aufbau der .hol habe ich mich mal an dem hier orientiert.
http://www.pctipp.ch/tipps-tricks/kummerkasten/office/artikel/outlook-feiertage-selbst-bereitstellen-66196/
Da brauchst du auch ne Überschrift mit der Anzahl der Einträge. Lese deshalb alle zu schreibenden Termine in ein Array und schreibe von dem dann in dien Datei.
Sub hol_erstellen()
'füllt eine .hol Datei mit den Werten aus Spalte A und B
Dim termine()
Dim ende As Integer
Dim i As Long
Dim datum As Date
Dim überschrift As String
Dim nr
nr = FreeFile()
ReDim termine(0)
termine(0) = 0
'Termine sind in Spalte A
If ActiveSheet.Cells(1, 1) <> "" Then
ende = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'alle Termine einlesen, die passen = A ist nicht leer, und B ist Datum
For i = 1 To ende
If ActiveSheet.Cells(i, 1) <> "" And IsDate(ActiveSheet.Cells(i, 2)) Then
'Format festlegen
datum = Format(CDate(ActiveSheet.Cells(i, 2)), "YYYY/MM/DD")
'Punkte ersetzen
datum = Replace(datum, ".", "/")
termine(0) = termine(0) + 1
ReDim Preserve termine(termine(0))
termine(termine(0)) = ActiveSheet.Cells(i, 1) & ", " & datum
End If
Next i
'Termine schreiben
If termine(0) > 0 Then
'Überschrift eintragen
überschrift = "[meineTermine] " & termine(0)
Open "C:\Users\XYZ123\Desktop\test.hol" For Output As #nr
Print #nr, überschrift
'jetzt Werte eintragen
For i = 1 To termine(0)
Print #nr, termine(i)
Next i
Close #nr
End If
End If
End Sub
Schau mal ob das so passt. Gruß
|