Office: (Office 2010) Per VBA Datentyp zu Datum ändern

Helfe beim Thema Per VBA Datentyp zu Datum ändern in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe eine kurze Frage: ich habe in einer Tabelle, die ich aus Excel importiere, 2 Spalten, die nach dem Import den Felddatentyp "Text"... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von DizzoR, 12. September 2015.

  1. Per VBA Datentyp zu Datum ändern


    Hallo,

    ich habe eine kurze Frage: ich habe in einer Tabelle, die ich aus Excel importiere, 2 Spalten, die nach dem Import den Felddatentyp "Text" aufweisen. Jedoch möchte ich gerne den Datentyp in Datum/Uhrzeit umändern, und das per VBA.
    Bis jetzt mache ich das Ändern von Text nach Zahl (Double) wie folgt:
    Code:
    Ich weiß aber nicht, wie ich den Code so abändere, dass er mir einmal das Format mm.yyyy für eine Spalte und dd.mm.yyyy für eine andere Spalte ändert.
    Kann ich da meinen Code für verwenden oder muss ich das anders machen?

    Auch stehe ich vor dem Problem, dass in einer Spalte z.B. "08.2015" steht und wenn ich das manuell auf Datum/Uhrzeit umstelle, macht er mir daraus "01.08.2015". Das darf ja nicht sein.

    Ich hoffe, ihr könnt mir kurz helfen.

    Besten Dank im Voraus!

    :)
     
  2. Hallo!

    Warum darf das nicht sein? Ein Datum besteht doch aus Jahr, Monat und Tag.
    Wenn du nur Monat und Jahr sehen willst, ist das Aufgabe der Formatierung.

    ... Die Formatierung hat meiner Meinung nach in der Tabelle nichts zu suchen. Dafür sind Formulare oder Berichte mit deren Steuerelementen zuständig.

    mfg
    Josef
     
  3. Weil ich das für unsere Auswertung brauche *wink.gif* In diesem Fall möchte ich in der Spalte nur den Monat und das Jahr stehen haben *Smilie

    Für die angesprochene Tabelle habe ich keine Steuerelemente. Daher ist es am besten, wenn ich das über Code oder Queries löse.

    Natürlich verstehe ich, wenn man das mit der Formatierung nicht macht, aber in meinem Fall ist es nötig *Smilie
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  4. Per VBA Datentyp zu Datum ändern

    Hallo,
    das geht nicht. Ein Feld des Datentyps "Datum/Uhrzeit" benötigt zwingend auch den Tag. Es kann kein Datumsfeld ohne die 3 Bestandteile geben. Nur die Zeit ist optional.
    Über eine Formatierung kannst Du die Darstellung mm.jjjj erreichen, aber ein Tag muss gespeichert werden.

    Ich würde auch keine Datentypen per VBA ändern. Verlinke die Exceltabelle und importiere dann per Anfügeabfrage in die mit den richtigen Datentypen vorgefertigte Accesstabelle. In der Anfügeabfrage können auch bei Bedarf die Datentypen angepasst werden. Aber auch dann wird für das Datum ein Tag benötigt.
     
    gpswanderer, 14. September 2015
    #4
  5. .. und die Auswertung ist 1:1 die Tabelle?

    ... und es muss unbedingt in der Tabelle sein?
    Du könntest die Formatierung z. B. über eine Abfrage einstellen, die du als Datenquelle für den Export verwendest.

    Falls du die Formatierungseinstellung in der Tabelle ändern willst, sollte das mittels VBA über das DAO.TableDef- u. DAO.Field-Interface möglich sein.

    Irgendwie so (ungetester Luftcode)
    Code:
    Ansonsten:
    Könntest du die Excel-Daten in eine bestehende Tabelle importieren? Dann musst du nicht jedes Mal die Formate anpassen.

    mfg
    Josef
     
  6. Vielen Dank für eure beiden Antworten!

    Ich habe mich entschlossen, das Format mm:yyyy nicht zu verwenden, da ich mir dieses aus zwei schon vorhandenen Datumsfeldern generieren könnte.
    Daher bleibt für mich nur von Interesse: Wie komme ich von Type Text nach Typ Datum/Uhrzeit?

    @gpswanderer: Verstehe ich das richtig, dass du dann in eine vorhandene Tabelle in Access importieren willst? Mein Import-Code sieht so aus:
    Code:
    .. und holt mir alles aus Excel rein, was ich brauche.

    Inwiefern kann ich denn damit per Anfügeabfrage importieren?
     
  7. Am sinnvollsten ist es, nicht den nächstliegenden Importknopf oder die nächstliegende Importanweisung zu verwenden, sondern

    - sich in seiner DB eine Tabelle (oder mehrere) so zu schaffen, wie man sie braucht, hier also das Feld mit Datentyp Date,
    - die zu importierende Tabelle zu verknüpfen,
    - die Daten per Anfügeabfrage zu übertragen.

    Im Rahmen der Abfrage kann man Daten so umformen/konvertieren, das sie unmittelbar in der richtigen Form in den Feldern landen.
     
  8. Per VBA Datentyp zu Datum ändern

    Hallo,
    ich glaube, Du hast es immer noch nicht richtig verstanden, der Datentyp Datum/Uhrzeit braucht immer auch einen Tag. Das hat mit Format nichts zu tun. Das Format dient nur dazu aus dem vollständigen Datum einen Teil davon anzuzeigen. Gespeichert in der Tabelle ist immer vollständig (tt.mm.jjjj).

    ja. Ebs17 hat es deutlicher beschrieben.
     
    gpswanderer, 14. September 2015
    #8
  9. Guten Morgen,

    ich denke, ich hab's jetzt geschnallt *Smilie Ich habe jetzt eine Tabelle erstellt mit Felddatentypen, wie ich sie brauche.
    Nur inwiefern kann ich denn jetzt die zu importierende Tabelle verknüpfen?

    Edit:

    Wenn ich das jetzt mit der Anfügeabfrage mache, bekomme ich einen Datentypenkonflikt, weil ich von einer Spalte mit Typ Text in eine Spalte vom Typ Datum/Uhrzeit anfüge *frown.gif*
     
  10. An der Stelle kann und sollte man eine entsprechende Umformung/Konvertierung machen. Einzelübung:
    Code:
    Der zweite Test zeigt, dass das Ergebnis tatsächlich eine Datums-Zahl ist.

    Ich erledige gerne die Verknüpfung innerhalb einer Abfrage, das erspart ein vorheriges explizites Verknüpfen (TransferSpreadsheet acLink) sowie das Entknüpfen danach. Als Basis könntest Du hernehmen:
    Code:
    Statt [Feldliste] und * verwendet man nun natürlich die realen Feldnamen und kann dort einzelne Umformungen integrieren.
     
  11. Erstmal vielen Dank für deine Hilfe, ebs17!

    Ich habe jedoch ein paar Probleme deinen Code anzupassen:
    Obwohl ich weiß, dass ich die richtige Anzahl an Feldern habe, sagt er mir ständig, die Anzahl der Abfragewerte und Zielfelder stimmen nicht überein.
    Code:
    Muss ich bei WHERE den Spaltenbuchstaben verwenden oder das Wort, das in der ersten Zeile steht? Bei mir gehen die Werte ab Zeile 2 los.

    Wo müsste ich denn jetzt noch Umformungen durchführen? Alles, was ich importiere, sind ja automatisch Text-Spalten. Davon sind 2 Spalten Datumstypen und 2 Spalten Zahlen (Double).
    Muss ich das bei diesem Import berücksichtigen?
     
  12. Wenn Du in der Exceltabelle keine Feldnamen benutzt (z.B. weil sie technisch unbrauchbar oder vielleicht gar nicht vorhanden sind), dann brauchst Du die Einstellung hdr=no (hdr => Header).
    Dann ist das Verhalten gleichwertig zu TransferSpreadsheet: Es werden für die Spalten intern Ersatznamen verwendet, nämlich F1, F2, F3 ..., und über Feldnamen spricht man Felder an. Also dann T.F4 statt T.D .
    Und statt T.* dann T.F1, T.F2 ... . Dann sollte es keine Anzahlirritierungen geben.

    Nachgefragt: In der Importtabelle tblImport hast Du keine richtigen (sprechenden!) Feldnamen? Armes Datenmodell, anstrengendes Arbeiten ...
    Natürlich würde man primär die Daten in der richtige Stammdatentabelle anfügen wollen und nicht erst in eine Import-Zwischentabelle, welche dann wieder zu entsorgen wäre.
     
  13. Per VBA Datentyp zu Datum ändern

    Doch, natürlich habe ich richtige Spaltennamen in meiner Stammdatentabelle.
    Hatte nur vorhin mir die tblImport Tabelle erstellen lassen per TransferSpreadsheet und die hat automatisch die F1 usw. Spaltennamen erstellt.

    Ich will jetzt mal spaßeshalber einfach nur eine Spalte mal mit deiner Methode importieren. Das ist diese hier in Excel:

    Per VBA Datentyp zu Datum ändern 23121251cl.jpg


    Wenn ich das ausführe, dann fragt er nach einem Parameterwert für T.Verkaufsbelegart. Das heißt, er kennt die Spalte nicht.
    Code:
    Habe ich da jetzt was vergessen, oder wieso kennt er das nicht?
     
  14. Code:
    Du musst schon wissen, welchen Bereich Du konkret auswertest und ob darin Header sind.
     
  15. Ich möchte ja nur den Bereich unterhalb der Zeile 1 haben, in der die Spaltenüberschrift steht, also ab Zeile 2.
    Wenn ich Tabelle1$E1:E nehme sowie hdr=yes, dann funktioniert es.

    Nur was ist denn, wenn ich jetzt sowas habe wie in Spalte F, wo es keine Überschrift gibt? Wie kann ich dann die Spalte selecten?

    Per VBA Datentyp zu Datum ändern 23121496uf.jpg


    Und dann weiß ich auch noch nicht, wie ich die Datumsumwandlung sowie das Umwandeln von Text nach Zahl lösen soll..
     
Thema:

Per VBA Datentyp zu Datum ändern

Die Seite wird geladen...
  1. Per VBA Datentyp zu Datum ändern - Similar Threads - VBA Datentyp Datum

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Textteile aus Zelle mit mehreren Absätzen

    in Microsoft Excel Hilfe
    Textteile aus Zelle mit mehreren Absätzen: Hallo, ich habe folgendes Problem: Ich habe in einer Liste in einer Zelle mehrere Angaben aus denen ich Textteile (z.B. alles was in () oder {} ist) herausziehen will, um damit weiter zurechnen....
  4. Aufrufen Datei aus SharePoint per VBA

    in Microsoft Access Hilfe
    Aufrufen Datei aus SharePoint per VBA: Wer kann mir helfen. In meiner Firma gibt es Dateien in diversen Ordner in Form von SharePoints, worauf alle Kolleginnen und Kollegen zugreifen kann. Dort habe ich eine Excel-Vorlage, worin die...
  5. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  6. VBA Zeilen kopieren mit Bedingung

    in Microsoft Excel Hilfe
    VBA Zeilen kopieren mit Bedingung: Hallo zusammen, Ich möchte per Makro Zeilen aus Tabelle2 in Tabelle3 kopieren, wenn eine Bedingung erfüllt ist. Bedingung: Der Wert in Spalte E (Tabelle2) kommt in Tabelle1 in Spalte E vor....
  7. Excel VBA Datei durchsuchen, Datentyp prüfen und bestimmten Inhalt auslesen

    in Microsoft Excel Hilfe
    Excel VBA Datei durchsuchen, Datentyp prüfen und bestimmten Inhalt auslesen: Hallo liebe Community, ich muss mit einem VBA-Code bei einer Nessus-Datei prüfen, ob bei einer Stelle wo normalerweise eine IP-Adresse stehen sollte ein Hostname steht(z.B. HSTSERV02) (müsste...
  8. VBA Variablen Deklarieren(Datentyp)

    in Microsoft Excel Hilfe
    VBA Variablen Deklarieren(Datentyp): Servus zusammen, leider lässt unser Firmennetzwerk nicht zu das ich hier die Exceldatei Hochladen kann, das würde einiges vereinfachen. Zum Problem: Ich habe eine Exceldatei mit 2...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden