ich habe eine Fritzbox-Fon Telefonanlage, mit der ich die Anrufliste
als csv-Datei abspeichern kann. Diese möchte ich jetzt gern auswerten.
In der ersten Spalte steht der Typ ("3") für abgehende Gespräche
und in der zweiten Spalte das Datum des Gesprächs.
Ich habe jetzt folgendes Problem:
Ich habe mir ein VBA Skript geschrieben, mit dem ich einen Zeitraum
eingeben kann und danach die Datei lade und auswerte. Wenn ich das Datum
in den Textfeldern des Formulares mit denen der Zeilen im Excel Sheet vergleiche, rechnet Excel falsch.
Bsp. Anfangsdatum=30.12.2005 Endedatum=04.01.2006. Ich gehe Zeile für
Zeile durch und vergleiche das entsprechende Datum mit dem Zeitraum.
(if datzeile endedatum then
Was mache ich falsch?
Anbei der Quelltext meines Programms:
Private Sub CommandButton1_Click()
'--- Datei öffnen über Auswahlfenster ---
ChDir "\Downloads"
ChDrive "e:\"
'Das Dialogfenster
Dateiname = Application.GetOpenFilename _
("Export-Dateien (*.csv),*.csv, Microsoft Excel-Dateien (*.xls),*.xls ")
If Dateiname = False Then Exit Sub
'Datei ist Text mit Semikolon getrennt
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" + Dateiname, Destination _
:=Range("A1"))
.Name = "sheet1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ";"
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'--- Nur abgehende Telefonate des Typs 3 ermitteln ---
'Spaltenanzahl
tmp = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'Für alle Spalten
For x = tmp To 2 Step -1
If (Cells(x, 1) = "1") Or (Cells(x, 1) = "2") Then Rows(x).Delete
Next x
'--- Datumsbereich eingrenzen ---
'datumstart = CDate(Zeitermittlung.TextBox1.Text)
'datumende = CDate(Zeitermittlung.TextBox2.Text)
datumstart = Format(Zeitermittlung.TextBox1.Text, "dd.mm.yyyy")
'Spaltenanzahl
tmp = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
'Für alle Spalten
For x = tmp To 2 Step -1
celltmp = Format(Cells(x, 2), "dd.mm.yyyy")
If celltmp < datumstart Then MsgBox (datumstart & datumende & celltmp)
Next x
End Sub
Ich bin für jede Hilfe dankbar.
Gruß
Fastman