Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17
Thema: Inhalt aus Excel-Zelle lesen und in Datum konvertieren Hallo Boardies, Ich wollte mir ein kleines Programm für ein Excelmakro schreiben, welches Daten aus dem Internet (per Hand rein ...
  1. #1
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359

    Inhalt aus Excel-Zelle lesen -> keine Stringfunktionen funktionieren

    Hallo Boardies,

    Ich wollte mir ein kleines Programm für ein Excelmakro schreiben, welches Daten aus dem Internet (per Hand rein kopiert) richtig anordnet, und wenn mal ein Tag übersprungen wird, dass er da den Wert des Vortages nimmt. Soweit, so gut. Nur streikt mein Testprogramm schon beim sortieren des Datums bzw. lesen des Datums.

    VB spuckt mir bei diesem Testprogramm:
    Code:
    Sub umwandeln_Datuum()
    
    ' Dies ist ein Kommentar
    
    Dim x As String
    
    x = Cells(1, 1).Text.toString
    
    Tag = x.Substring(0, 2)         ' hier kommt der Fehler
    
    Monat = x.Substring(3, 2)
    
    MsgBox (x & ": " & Tag & "." & Monat & ".")
    
    End Sub
    beim unterstrichenen x einen Fehler aus, dass dieses "x" ein ungültiger Bezeichner sei. Ich habe es auch schon mit anderen Variablennamen versucht.
    Eine Bedingung herrscht allerdings vor: Das Datum aus dem Internet ist nur mit Tag und Monat gegeben.
    zB:
    Code:
    27.05.
    Ich hoffe, mir kann jemand helfen und ich bin über jeden Versuch, mir zu helfen, sehr dankbar.
    Geändert von schl3ck (29.05.12 um 15:17 Uhr)

  2.   Anzeige

     
  3. #2
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Vielleicht kann ich dir helfen, wenn du mir verrätst, wofür Cells ist und am besten auch eine msdn-Seite dazu gibst.
    Hab etwas gegoogled, aber irgendwie nichts gutes gefunden. :/

    Den Code ansonsten verstehe ich und dabei stellt sich mir auch gleich eine Frage:
    Wo hast du die Variablen Tag und Monat deklariert? Wenn du das vergessen hast, ist klar, dass es einen Fehler gibt.
    Wenn nicht, dann wäre die Fehlermeldung hilfreich.

    Ansonsten würde ich nur noch vermuten, dass x einfach keine 2 Zeichen lang ist, dass du die direkt verwenden kannst.


    Außerdem solltest du mal schauen, ob es bei Visual Basic die Struktur DateTime gibt.
    Wenn ja, dann schau sie dir mal an, denn so Dinge, wie das Ausgeben des Tag-Elementes ist da ganz schnell gelöst.
    schl3ck bedankt sich.

  4. #3
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Zitat Zitat von Palladin007 Beitrag anzeigen
    Vielleicht kann ich dir helfen, wenn du mir verrätst, wofür Cells ist und am besten auch eine msdn-Seite dazu gibst.
    Hab etwas gegoogled, aber irgendwie nichts gutes gefunden. :/
    Cells gibt eine Zelle in einer Excletabelle mithilfe von 2 Integer an. Klick

    Zitat Zitat von Palladin007 Beitrag anzeigen
    Den Code ansonsten verstehe ich und dabei stellt sich mir auch gleich eine Frage:
    Wo hast du die Variablen Tag und Monat deklariert? Wenn du das vergessen hast, ist klar, dass es einen Fehler gibt.
    Wenn nicht, dann wäre die Fehlermeldung hilfreich.
    Ich habe zwar die Variablen Tag und Monat nicht deklariert, aber daran lag auch nicht das Problem:
    Inhalt aus Excel-Zelle lesen und in Datum konvertieren-excel-stringfehler.jpg

    Zitat Zitat von Palladin007 Beitrag anzeigen
    Ansonsten würde ich nur noch vermuten, dass x einfach keine 2 Zeichen lang ist, dass du die direkt verwenden kannst.
    VB lässt mich nicht mal die Länge ausgeben... (dabei ensteht der selbe Fehler wie im Bild) Nur den Inhalt der Variable selbst (mithilfe einer MsgBox), und dieser entspricht "27.05." (ohne ").

    Zitat Zitat von Palladin007 Beitrag anzeigen
    Außerdem solltest du mal schauen, ob es bei Visual Basic die Struktur DateTime gibt.
    Wenn ja, dann schau sie dir mal an, denn so Dinge, wie das Ausgeben des Tag-Elementes ist da ganz schnell gelöst.
    Mir geht es nicht darum, den heutigen Tag heraus zu finden, sondern zu wissen, welches Datum in der entsprechenden Exceltabellenzelle steht.

    Vielen Dank für deine Hilfe!

  5. #4
    treuer Stammgast Avatar von Rev. Bumszack
    Registriert seit
    27.11.10
    Ort
    Pott
    Beiträge
    149

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Hab leider von Excel (und VB) nicht so viel Ahnung, dass ich Deinen Codeschnipsel bewerten könnte.

    Wenn die Zelle, auf die sich dieses Script bezieht, falsch formatiert ist, nützt das Ganze vermutlich nichts.
    Das Datum oder die Uhrzeit wird in Excel intern durch fortlaufende Zahlen geführt, zB 42058 (heute), der nächste Tag (morgen) wäre dann 42059 usw. Wenn Du also auf eine dieser Zahlen Bezug nehmen willst, sollte sie im Format JJMMTT dargestellt werden, sonst kann VB vermutlich nichts damit anfangen.
    Uhrzeiten werden entsprechend, aber mit Nachkommastellen gerechnet. Formatierung ist nur die optische Darstellung, rechnerisch die fortlaufende Zahl. Wenn Du bei der Formatierung keine Jahreszahl angibst, behandelt Excel dies als normale Zahl.
    Falls Dir das schon klar war, liegt bei mir ein Verständnisfehler vor - bitte entschuldige, bin nur Gelegenheitsuser.
    schl3ck bedankt sich.

  6. #5
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359
    Danke, aber das weiß ich bereits. Deswegen versuche ich ja auch das Datum, welches nur mit Tag & Monat gegeben ist, heraus zu finden, um es nachher ins "echte" Exceldatum zu schreiben, also dass es intern eine Zahl ist.

    Aber ich habe ja das Problem, dass keine Stringfunktion (zB myString.length oder myString.Substring) funktionieren wollen...

  7. #6
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    DateTime ist nicht nur für das aktuelle Datum. Das findet man mit DateTime.Now raus (Bei C#). Man kann damit aber allgemein Zeiten speichern und diese formatieren, wie es einem passt. Wenn du das Datum da rein bekommst, dann wäre der Rest ganz einfach.


    Hast du denn mal versucht, das Programm zu debuggen? Was für einen Compiler nutzt du denn?
    Bei Visual Studio debuggst du das Programm automatisch bei jedem Test (F5) außer du stellst es aus.



    Und ich schau derweil mal, ob es bei DateTime nicht eine Methode gibt, die das Datum aus einem String lesen kann.
    Dachte, da kommt sowas drin vor :
    Ob die Methode dann in VB gleich ist, kann ich noch nicht sagen.

    Auf jeden Fall, wenn es die gibt, müsstest du nur noch ein fiktives Jahr (das wars doch, was in dem Datum fehlt?) anhängen und der Methode übergeben.
    Als Ergebnis bekommst du ein DateTime-Objekt, wo du nur noch Tag und Monat über die Eigenschaften abfragen musst.

    Aber ob es das alles in VB auch gibt, keine Ahnung.
    Ich starte mal ein VB-Projekt und experimentiere was rum^^
    schl3ck bedankt sich.

  8. #7
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Keine Ahnung, welcher Compiler benutzt wird. Ich verwende Visual Basic for Applications für die Excelmakros. Ich meine, ich starte Excel, klicke dann auf "Entwicklertools" und schließlich auf "Makros". Nun wähle ich eins aus und klicke auf "Bearbeiten". Damit bin ich VBA.

    Das ganze mit dem Datum habe ich mir schon angeschaut, aber wie gesagt, mir geht es um den Fehler (ich nehme an, dass es einer ist), dass bei mir keine String-Funktionen funktionieren (zB myString.length oder myString.Substring).

  9. #8
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Code:
    Module Module1
    
        Sub Main()
            ShowDate("27.5.")
            Console.Read()
        End Sub
    
        Sub ShowDate(ByVal dat As String)
            ' Die übergebene Datums-Zeichenfolge in das richtige Format bringen
            dat += "0 0:0:0 PM"
    
            ' Den String-Wert der Parse-Methode übergeben und Ergebnis als Wert von Date speichern
            Dim Datum As Date = Date.Parse(dat)
    
            ' Von dem Date-Wert Tag und Datum abfragen und anschließend als String abspeichern
            Dim Tag As String = Datum.Day
            Dim Monat As String = Datum.Month
    
            ' Damit habe ich mir das Ergebnis anzeigen lassen
            Console.WriteLine(Tag & "." & Monat & ".")
        End Sub
    
    End Module
    Das funktioniert, hab nun Tag und Monat als String und kann es nutzen.
    Hoffe, das war es, was du versucht hast^^


    Zitat Zitat von schl3ck Beitrag anzeigen
    Keine Ahnung, welcher Compiler benutzt wird. Ich verwende Visual Basic for Applications für die Excelmakros. Ich meine, ich starte Excel, klicke dann auf "Entwicklertools" und schließlich auf "Makros". Nun wähle ich eins aus und klicke auf "Bearbeiten". Damit bin ich VBA.

    Das ganze mit dem Datum habe ich mir schon angeschaut, aber wie gesagt, mir geht es um den Fehler (ich nehme an, dass es einer ist), dass bei mir keine String-Funktionen funktionieren (zB myString.length oder myString.Substring).

    Achso, ja dann wird das auch nix mit dem debuggen...

    Warum das mit dem String nicht klappt, könnte (blinde Vermutung) vielleicht daran liegen, dass die String-Funktionen im Namespace (Bei VB Module oder) System liegen und das Ding muss man erst als DLL und dann als Namespace (Module) einbinden, bevor es genutzt werden kann.

    Obwohl die ToString-Funktion eigentlich von object geerbt ist und damit allgegenwärtig sein sollte
    Geändert von Palladin007 (29.05.12 um 15:41 Uhr)
    schl3ck bedankt sich.

  10. #9
    treuer Stammgast Avatar von Rev. Bumszack
    Registriert seit
    27.11.10
    Ort
    Pott
    Beiträge
    149

    AW: Inhalt aus Excel-Zelle lesen -> keine Stringfunktionen funktionieren

    Zitat Zitat von schl3ck Beitrag anzeigen

    Tag = x.Substring(0, 2) ' hier kommt der Fehler

    Monat = x.Substring(3, 2)
    Wäre es möglich, dass VB hier an Stelle einer Variable x den Namen des Substrings benötigt, zB Tag = x day.substring (3, 2)oder so ähnlich, entsprechend dann x month.substring oder so ähnlich?
    Zitat Zitat von schl3ck
    ...einen Fehler aus, dass dieses "x" ein ungültiger Bezeichner sei. Ich habe es auch schon mit anderen Variablennamen versucht.
    Das hört sich doch so an, als brauchte VB einen intern festgelegten Namen nach der Variable, es erkennt x offensichtlich nicht als Var., wenn es die genaue (VB-)Bezeichnung nicht hat.
    Zitat Zitat von schl3ck
    Eine Bedingung herrscht allerdings vor: Das Datum aus dem Internet ist nur mit Tag und Monat gegeben.
    Wenn ich das richtig begreife, kopierst Du das händisch ins Worksheet. Da sollte es doch nicht allzuviel Mühe machen, das Datum händisch zu ergänzen?
    schl3ck bedankt sich.

  11. #10
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Ne, das mit dem x ist schon richtig, habs im Visual Studio getestet.
    Substring ist eine Methode der Klasse String, das heißt, sie wird über das zu bearbeitende Objekt via Punkt-Operator aufgerufen.


    Die Letzte Idee, die ich hab, ist folgende:

    Du hast x in einer Zeile deklariert und erst in der Folgenden Zeile instanziert.
    Bei Referenz-Typen würde in der ersten Zeile kein Wert vorhanden sein, eine solche Methode würde also nicht funktionieren.
    Bei C# ist String allerdings ein Werte-Typ dann wird automatisch der Wert null gegeben.

    Wie das bei Visual Basic ist, kann ich nicht sagen, aber vielleicht solltest du mal heraus finden, ob diese Zeile: Cells(1, 1).Text.toString überhaupt korrekt arbeitet.
    Denn die ist dazu gedacht, x einen Wert zu verpassen und wenn x in VisualBasic als Referenz-Typ behandelt wird und die Methode nicht korrekt arbeitet, ist x zwar deklariert, hat aber keinen Wert, also keine Referenz. Die Methode ist also nicht zulässig.

    Der zeigt das aber auch nur als Laufzeitfehler an, weil der Compiler ja nur die Deklaration der Variable sieht. In der Zeile danach wird sie ja instanziert, wenn die Methode aber einen nicht vorhandenen Wert ausgibt, sieht der Compiler das nicht.


    Was du also machen kannst, ist folgendes:

    MsgBox(Cells(1, 1).Text.toString)

    Wenn diese Methode alles korrekt ausgibt, dann weiß ich auch nicht weiter -.-
    Ich würde noch rum experimentieren, indem ich Deklaration und Instanzierung in eine Zeile schreiben, also so:

    Dim x As String = Cells(1, 1).Text.toString

    Aber ob das hilft, bezweifle ich.
    schl3ck bedankt sich.

  12. #11
    treuer Stammgast Avatar von Rev. Bumszack
    Registriert seit
    27.11.10
    Ort
    Pott
    Beiträge
    149

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    @Palladin007: "Deklaration und Instanzierung" war das, was ich hinter meinem umständlichen Nicht-Codierer-Schnack gemeint hatte. Danke für die Übersetzung!

  13. #12
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Achso?
    Ich hab bei dir ehrlich gesagt nicht durch geblickt^^

    Na mal schauen, was er sagt, wenn er wieder online ist^^

  14. #13
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    Code:
    MsgBox (Cells(1, 1).Value.Text)
    MsgBox (Cells(1, 1).Value)
    MsgBox (Cells(1, 1).Value.Text.toString)
    Die ersten Beiden funktionieren, nur beim Dritten regt er sich auf, dass er kein Objekt hat.
    Da habe ich es mal Versucht, indem ich x als Objekt festgelegt habe. Beim Kompilieren regt er sich dafür nicht mehr auf, sondern beim Abrufen der Information aus dem Worksheet schreibt er: "Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt"

    Wenn ich versuche, die Variable zu deklarieren und in der selben Zeile einen Wert zuzuweisen, regt er sich schon auf, wenn ich mit dem Cursor aus der Zeile gehen will, dass da das Objektende erwartet wird (vor dem = ). Führe ich das Programm trotzdem aus, kommt beim Kompilieren der Fehler, das da ein Syntaxfehler vorliegt.


    Händisch die Daten einzugeben wäre natürlich eine Möglichkeit, aber dafür bin ich viel zu faul... (also nehm ich den schwierigeren Weg ums nachher leichter zu haben...)

  15. #14
    dem Board verfallen Avatar von Palladin007
    Registriert seit
    19.08.11
    Ort
    Mecklenburg Vorpommern
    Beiträge
    1.712

    AW: Inhalt aus Excel-Zelle lesen und in Datum konvertieren

    toString, was soll das eigentlich tun?

    Text ist doch schon string, sonst würde die MsgBox es nicht akzeptieren.


    ALso jetzt kann ich wirklich nur noch spekulieren, dass der Compiler (du nutzt ja einen von Excel, oder) da ein bisschen verbugt ist.
    Du kannst dir ja mal Visual Studio 2010 Express downloaden, dort ein VisualBasic-Projekt erstellen und dann alles dort programmieren.
    Wenn es da einen Fehler gibt, hast du gleich alle Infos vom Debuggen und kannst schauen, was das Problem ist.

    Wenn es dann dort funktioniert, fügst du es bei Excel ein.
    Und wenn es dann nicht geht, liegts wohl am Excel und du musst dir Infos darüber suchen, ob es bei Excel vielleicht irgendwelche Sonderregelungen gibt. :/
    schl3ck bedankt sich.

  16. #15
    mit schl3ck-Komplexität Avatar von schl3ck
    Registriert seit
    11.10.09
    Ort
    Graz, Steiermark, Ö
    Beiträge
    1.359
    .Text gibt das her, was der Benutzer in der Exceltabelle sieht und .Value gibt das aus, was für Excel drinnen steht, also zB die Nummer für das Datum.

    Ich werde es mal mit einer Neuinstallation bzw. mit "Reparieren versuchen. Mal sehen, was er dann sagt...

    Trotzdem herzlichen Dank an euch beide, dass ihr euch die Zeit genommen habt, mir zu helfen

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 27.02.09, 10:37
  2. Excel - Erste nicht leere Zelle aufspüren (und letzte gefüllte)
    Von Vordack im Forum Alles rund um Windows
    Antworten: 4
    Letzter Beitrag: 21.07.08, 08:00
  3. Explorer Inhalt in Excel-Tabelle
    Von Yogibär im Forum Alles rund um Windows
    Antworten: 6
    Letzter Beitrag: 03.08.05, 07:27
  4. [WinXP] EXCEL 2000: Maximale Anzahl Zeichen pro Zelle. Dringend!!!!!
    Von stkottmann im Forum Alles rund um Windows
    Antworten: 6
    Letzter Beitrag: 04.06.04, 09:20
  5. datum aus datenbank lesen
    Von saegeblatt im Forum Programmierung & Webdesign
    Antworten: 1
    Letzter Beitrag: 16.02.04, 08:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Content Relevant URLs by vBSEO 3.6.1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53