Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum als Variable definieren - externe Daten

Datum als Variable definieren - externe Daten
18.10.2007 11:29:14
Schroeder
Hallo,
ich habe ein Problem mit dem Auslesen eines Datumfeldes aus einer Accesdatenbank.
Das Datumsfeld sieht in Access so aus: 17.10.2007 00:00
Nun möchte ich in Excel die zugehörigen Daten möglichst mit Angabe des Datum auslesen:

Sub riscaserv()
' riscaserv Macro
' Macro recorded 16.10.2007 by xn04553
Dim DATUM As Date
DATUM = Sheets("riscaserv").Range("E2").Value
Range("C4").Select
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=K:\Themes\THE07033\RisCaServ\basedata_history.mdb; _
DefaultDir=K:\Themes\THE07033\RisCaServ;DriverId=2" _
), Array("5;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
Range("C4"))
.CommandText = Array( _
"SELECT PriceHistory.WKN, PriceHistory.Kurs, PriceHistory.PriceTime" & Chr(13) & "" & Chr(10) &  _
_
"FROM `K:\Themes\THE07033\RisCaServ\basedata_history`.PriceHistory PriceHistory" & Chr(13) & ""  _
& Chr(10) & "WHERE (PriceHistory.PriceTime={ts '2007-10-16 00:00:" _
, "00'})")
.Name = "Query from MS Access Database_5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub


Vielleicht kann mir jemand einen Tip geben wie ich die Variable DATUM definieren muß, bzw. was im SQL-Statement stehen muß.
Danke.
Grüsse

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum als Variable definieren - externe Daten
18.10.2007 12:36:00
Wolli
Hallo Schröder, ich bin nicht sicher, ob es funktioniert, aber wenn Du einen Datumswert hast, kannst Du ihn beliebig formatieren und als String ausgeben.
Um "17.10.2007 00:00" zu erhalten, schreibst Du in VBA

... format(MeinDatum,"DD.MM.YYYY hh:mm")


(Das entspricht der Tabellenfunktion =TEXT(A1;"TT.MM.JJJJ hh:mm)
Wenn Du das an Access übergibst, könnte es klappen.
Gruß, Wolli

Anzeige
AW: Datum als Variable definieren - externe Daten
18.10.2007 13:16:00
Schroeder
Hallo Wolli,
danke für Deine Antwort.
Ich habe es jetzt mal eingebaut:
Dim DATUM As Date
DATUM = Sheets("riscaserv").Range("E2").Value
Range("E2").Value = Format(Range("E2"), "DD.MM.YYYY hh:mm")
Range("C4").Select
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=K:\Themes\THE07033\RisCaServ\basedata_history.mdb;DefaultDir=K:\Themes\THE07033\RisCaServ;DriverId=2" _
), Array("5;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
Range("C4"))
.CommandText = Array( _
"SELECT PriceHistory.WKN, PriceHistory.Kurs, PriceHistory.PriceTime" & Chr(13) & "" & Chr(10) & "FROM `K:\Themes\THE07033\RisCaServ\basedata_history`.PriceHistory PriceHistory" & Chr(13) & "" & Chr(10) & "WHERE (PriceHistory.PriceTime='" & DATUM & "')")
.Name = "Query from MS Access Database_5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
Nun kommt immer die Fehlermeldung:
Run-time error '1004'
Die Problemzeile ist:
.Refresh BackgroundQuery:=False
Grüße

Anzeige
AW: Datum als Variable definieren - externe Daten
18.10.2007 15:08:00
Wolli
Versuche

DIM DATUM as String
DATUM = Format(Sheets("riscaserv").Range("E2").Value, "DD.MM.YYYY hh:mm")


statt


DIM DATUM as Date
DATUM = Sheets("riscaserv").Range("E2").Value
Range("E2").Value = Format(Range("E2"), "DD.MM.YYYY hh:mm")


und prüfe den Inhalt von DATUM mit
debug.print DATUM (im Direktbereich beim schrittweisen Ausführen)
Gutes Gelingen + Gruß, Wolli

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum als Variable definieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Datum als Variable in Excel VBA zu definieren und mit Daten aus einer Access-Datenbank zu arbeiten, folge diesen Schritten:

  1. Datum definieren: Verwende den Befehl Dim, um eine Variable für das Datum zu erstellen. Du kannst entweder As Date oder As String verwenden, abhängig davon, wie du das Datum weiterverarbeiten möchtest.

    Dim DATUM As String
    DATUM = Format(Sheets("riscaserv").Range("E2").Value, "DD.MM.YYYY hh:mm")
  2. SQL-Abfrage anpassen: In deiner SQL-Abfrage musst du sicherstellen, dass das Datum korrekt formatiert ist, um Fehler zu vermeiden. Achte darauf, das Datum in einfache Anführungszeichen zu setzen.

    .CommandText = Array("SELECT PriceHistory.WKN, PriceHistory.Kurs, PriceHistory.PriceTime " & _
                        "FROM `K:\Themes\THE07033\RisCaServ\basedata_history`.PriceHistory PriceHistory " & _
                        "WHERE (PriceHistory.PriceTime='" & DATUM & "')")
  3. Abfrage ausführen: Stelle sicher, dass die Abfrage korrekt ausgeführt wird, indem du das Refresh-Kommando verwendest.

    .Refresh BackgroundQuery:=False

Häufige Fehler und Lösungen

  • Run-time error '1004': Dieser Fehler tritt häufig auf, wenn die SQL-Abfrage nicht korrekt formuliert ist. Überprüfe, ob das Datum richtig formatiert ist und dass es im SQL-Statement in einfache Anführungszeichen gesetzt wird.

  • Falsches Datumsformat: Achte darauf, dass das Datumsformat in Access mit dem in Excel übereinstimmt. In der Regel wird mm/dd/yyyy oder yyyy-mm-dd benötigt.

  • Variable als Date definieren: Wenn du die Variable als Date definierst, stelle sicher, dass du das Datum richtig zuweist. Die Verwendung von As String kann manchmal die einfachere Lösung sein.


Alternative Methoden

Statt das Datum direkt aus einer Zelle zu lesen, kannst du auch das aktuelle Datum in VBA verwenden:

Dim aktuellesDatum As Date
aktuellesDatum = Date

Für Abfragen in Access kannst du auch SQL-Funktionen wie Date() verwenden, um das aktuelle Datum zu erhalten.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das zeigt, wie du ein Datum als Variable definierst und in einer SQL-Abfrage verwendest:

Sub Beispiel()
    Dim DATUM As String
    DATUM = Format(Sheets("riscaserv").Range("E2").Value, "DD.MM.YYYY hh:mm")

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=K:\Themes\THE07033\RisCaServ\basedata_history.mdb;DriverId=2" _
    ), Array("5;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("C4"))
        .CommandText = Array("SELECT PriceHistory.WKN, PriceHistory.Kurs, PriceHistory.PriceTime " & _
                             "FROM `K:\Themes\THE07033\RisCaServ\basedata_history`.PriceHistory PriceHistory " & _
                             "WHERE (PriceHistory.PriceTime='" & DATUM & "')")
        .Refresh BackgroundQuery:=False
    End With
End Sub

Tipps für Profis

  • Debugging: Verwende Debug.Print, um den Wert deiner Datumsvariablen während der Ausführung zu überprüfen.

  • Formatierungen: Achte darauf, die richtigen Formatierungen zu verwenden. In Access kann das Datumsformat variieren, daher ist es wichtig, die Formatierungen zu überprüfen.

  • Makros automatisieren: Du kannst Excel-Makros verwenden, um die Datenabfrage zu automatisieren und regelmäßig mit aktuellen Daten zu versorgen.


FAQ: Häufige Fragen

1. Wie kann ich das aktuelle Datum in VBA verwenden?
Du kannst das aktuelle Datum mit der Funktion Date abrufen, z.B. Dim aktuellesDatum As Date: aktuellesDatum = Date.

2. Was ist der Unterschied zwischen As Date und As String?
As Date speichert das Datum in einem Datumsformat, während As String das Datum als Text speichert. Verwende As String, wenn du das Datum für SQL-Abfragen formatieren möchtest.

3. Wie formatiere ich ein Datum in VBA?
Verwende die Funktion Format, um das Datum zu formatieren, z.B. Format(DATUM, "DD.MM.YYYY hh:mm").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige