Excel auslesen

  • VB.NET

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von G.o.E.

    Excel auslesen

    Hallo,

    ich weis das Forum ist voll damit, aber unter VB08 kriege ich es einfach nicht hin. Ich möchte bestimmte Spalten und Zeilen von einer Excel Datei auslesen.
    Excel mit der dazugehörigen Datei öffnen ist kein Problem, aber alles andere funktioniert nicht. ZB. auslesen von bestimmten Zellen einer bestimmten Seite.

    VB.NET-Quellcode

    1. Dim objExcel
    2. objExcel = CreateObject("Excel.Application")
    3. objExcel.Visible = True
    4. Dim oWbk
    5. oWbk = objExcel.Workbooks.Open(Pfad)
    6. Dim oWks
    7. oWks = oWbk.Worksheets("Sheet2") 'Geht nicht
    8. Dim oCell
    9. oCell = oWks.Cells(5, 7) 'Geht nicht
    10. ListBox1.Text(oCell) 'Geht nicht



    Gruß
    Sabine
    Hi Agent,

    mit Deinem Vorschlag kommt keine Fehlermeldung, aber funktionieren tut es auch nicht. Absolut keine Fehlermeldung und nix.
    Unter Projekt "Verweis hinzufügen" habe ich Excel angegeben, trotzdem wird es bei der Deklaration nicht erkannt. D.h.

    VB.NET-Quellcode

    1. Dim xls as Excel.Application
    2. u.s.w.

    bringt mir bei Excel auch nur Fehler.

    Gruß
    Sabine
    Hi,

    Sheet2 gibt es. Merkwürdigerweise kann ich es ansprechen bzw. bearbeiten z.B. mit

    VB.NET-Quellcode

    1. InputBox.Value = ....


    Beim Auslesen der Zellen, egal wie ich es mache, erhalte ich immer folgende Meldung:
    "Ungültige Konvertierung von Typ Range in Typ String."


    Gruß
    Sabine
    habe gestern das ganze Netz abgesucht aber kein Code war für 2010Express bzw. war kompaktibel.
    ich habe vom Programieren keine Ahnung, möchte es aber lernen.
    Das bisherige program (das im Link) ist zusammengebaut aus sachen die ich im Netz gefunden habe und so abgeändert haben das sie für meine zwecke gehen, das hat mir schon beim verstehen geholfen.
    also ich gebe mich auch mit einem Tip/Beispielscode zufrieden den ich dann so umbauen kann das er zu mir past.
    oder falls du einen fertigen schreiben willst dann wenn es geht mit paar Kommentaren (ist besser für lernen/verstehen).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „G.o.E“ ()

    bin ich ja dabei, mir sie anzueignen.
    habe mit den Übungsaufgabe angefangen die in VB2010 sind ( Bildbetrachtung und Labyrinth), jetzt hatte ich mir gedacht wieso ich mir nicht etwas bau was ich brauchen.

    Wieso gibst du mir nicht einfach einen Tip? Ein bruchstück vom Code damit ich dort ansetzen kann.

    Also meine Erfahrung mit dem lernen ist, Theorie ist schön und gut aber in der Praxis lernt man noch am besten.
    Hi,
    so ich habe es geschafft auch mithilfe des openbooks mit ein paar änderungen.

    jetzt hängt es daran das ich die aktuell geöffnete datei ansprechen möchte nicht wie im code die auf der c: Platte liegt.
    D.h. ich lade aus dem internet die Excel datei (bzw. öffne diese) das Problem ist das der Dateiname und der name des sheets sich aush Datum + Uhrzeit zusammensetzt.
    Wie kann ich jetzt eine Datei wo ich nur den anfang und das Ende kenne (sprich XYZ_Datum+Zeit.csv) öffnen.


    Quellcode

    1. Dim oXLApp As Excel.Application
    2. Dim oWbk As Excel.Workbook
    3. Dim oWks As Excel.Worksheet
    4. Dim xlsZelle As Excel.Range
    5. oXLApp = New Excel.Application
    6. oWbk = oXLApp.Workbooks.Open("C:\Users\test\Desktop\Mappe1.xlsx")
    7. oWks = oWbk.Worksheets("Tabelle1")
    8. xlsZelle = oWks.Range("A2")
    9. xlsZelle.Value = "=Anzahl2(A2:A1000)"
    Hi,
    habe folgendes gefunden was passen sollte, weis aber nicht wie ich ihn in mein code einbinden soll.
    komme einfach nicht mehr weiter und ich habe noch paar fragen.

    Quellcode

    1. Imports System
    2. Imports System.IO
    3. Public Class Test
    4. Public Shared Sub Main()
    5. Try
    6. ' Only get files that begin with the letter "c."
    7. Dim dirs As String() = Directory.GetFiles("c:\", "c*")
    8. Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)
    9. Dim dir As String
    10. For Each dir In dirs
    11. Console.WriteLine(dir)
    12. Next
    13. Catch e As Exception
    14. Console.WriteLine("The process failed: {0}", e.ToString())
    15. End Try
    16. End Sub
    17. End Class


    Quellcode

    1. Sub getFiles(ByVal path As String, ByVal pattern As String)
    2. Me.ListBox1.Items.AddRange(IO.Directory.GetFiles(path, pattern)) diese _
    3. zeile möchte ich ersetzen mit
    4. For Each s As String In IO.Directory.GetDirectories(path)
    5. getFiles(s, pattern)
    6. Application.DoEvents()
    7. Me.TextBox2.Text = Me.ListBox1.Items.Count.ToString + " - " + s
    8. Next
    9. End Sub
    So das mit dem Dateinamen hat sich erledigt und mit dem Verwende auch.

    Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If My.Computer.FileSystem.DirectoryExists("C:\Users\XXX\Desktop\") Then
    3. IO.Directory.SetCurrentDirectory("C:\Users\XXX\Desktop\")
    4. Else
    5. MsgBox("Das Verzeichnis *:\ existiert nicht")
    6. End If
    7. Dim verzeichnis As String
    8. Dim dateiliste() As String
    9. Dim i As Integer
    10. verzeichnis = IO.Directory.GetCurrentDirectory()
    11. dateiliste = IO.Directory.GetFiles(verzeichnis, "*.*") 'einfach hier *.XXX entsprechende Endung eingeben
    12. TextBox2.Text = (Join(IO.Directory.GetFiles(verzeichnis, "*.csv"), " "))
    13. End Sub


    Quellcode

    1. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    2. Dim oXLApp As Excel.Application
    3. Dim oWbk As Excel.Workbook
    4. Dim oWks As Excel.Worksheet
    5. Dim xlsZelle As Excel.Range
    6. oXLApp = New Excel.Application
    7. oWbk = oXLApp.Workbooks.Open(TextBox2.Text)
    8. 'oWbk = oXLApp.Workbooks.Open("C:\Users\xxx\Desktop\xxx.csv")
    9. oWks = oWbk.Worksheets("mr260_20100812181624")
    10. xlsZelle = oWks.Range("A1")
    11. xlsZelle.Value = "=COUNTA(R[1]C:R[1999]C)"
    12. 'xlsZelle.Value = "=Anzahl2(A2:A1000)"
    13. TextBox1.Text = (xlsZelle.Value)
    14. oWbk.Close(SaveChanges:=False)
    15. oXLApp.Quit()
    16. My.Computer.FileSystem.DeleteFile(TextBox2.Text)
    17. End Sub


    So wir kommen zum ende :) fast jedenfalls.

    wie bekomme ich es jetzt hin das wenn ich die Suchmaske ausgefüllt habe.

    Quellcode

    1. rivate Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    2. WebBrowser1.Document.GetElementById("txtFilterTelexArt").InnerText = "Text"
    3. WebBrowser1.Document.GetElementById("txtFilterNeuanlage").InnerText = TextBox3.Text
    4. WebBrowser1.Document.GetElementById("txtFilterHerkunft").InnerText = "Text*"
    5. WebBrowser1.Document.GetElementById("txtFilterStandort").InnerText = "Text*"
    6. WebBrowser1.Document.GetElementById("txtFilterZiel").InnerText = "Text*"
    7. WebBrowser1.Document.GetElementById("txtFilterAnzErgebnisse").InnerText = "1000"
    8. If Not TextBox3.Text = "" Then
    9. Button6.Enabled = True
    10. WebBrowser1.Document.GetElementById("chkCsvExport").Focus()
    11. SendKeys.Send(" ")
    12. End If

    ich bei den Downloadfenster (Speicher / Öffnen / Schießen) auf Speichern drücke ? sobald das fenster offen ist dies dauert in der regel so 2-3sec.

    Und wie bekomme ich das mit dem Datum und dem Platzhalter hin ( 13.08.10* )
    Bei ( WebBrowser1.Document.GetElementById("txtFilterNeuanlage").InnerText = TextBox3.Text ) muss nähmlich das aktuelle datum mit Sternchen hin, ausserdem muss das Datum per Hand noch geändert werden können.