Excel File mit mehreren Arbeitsblättern in VB einlesen zum Suchen.

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Fragglechen.

    Excel File mit mehreren Arbeitsblättern in VB einlesen zum Suchen.

    Hallo.
    Hat wer eine Idee für mich? Ich habe schon mehrere Tutorials und Seiten durchgeschaut aber nicht das passende gefunden.

    Ich möchte gern ein Programm schreibe um aus einem Excel Daten zu auszulesen auf welchen Rechnern welches Programm installiert ist.

    Ich habe dazu ein Excel file in dem jeder Rechner sein eigenes Arbeitsblatt hat und der Rechnername ist der Arbeitsblattname

    über einen Update Button möchte ich diese Datei gern in VB 2010 einlesen. Ich möchte dann gern nach einem Programmnamen eingeben können und auf Suchen klicken.
    Als Ergebnis soll mir angezeigt werden, auf welchem Rechner das Programm installiert ist und die Details die zu dem Programm noch in dem Arbeitsblatt angezeigt wird.
    Wenn sich etwas in dem Excel ändert, möchte ich gern über den Update Button die eingelesenen Daten updaten.

    Bis zum Öffnen des Files kam ich schon mal:

    Quellcode

    1. Option Explicit On
    2. Option Strict Off
    3. Imports System.Text.RegularExpressions
    4. Imports System.IO
    5. Imports Excel = Microsoft.Office.Interop.Excel
    6. Public Class Form1
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. Const ExcelDatei As String = "d:\ADD\temp\20150220\Programm.xls"
    9. Dim Suchmuster As String
    10. Dim Reg As Regex
    11. Dim Trefferliste As MatchCollection
    12. Dim xls_Appl As Excel.Application ' Excel Anwendung
    13. Dim xls_Mappe As Excel.Workbook ' Excel Arbeitsmappe
    14. Dim xls_Blatt As Excel.Worksheet ' Excel Blatt (Tabelle)
    15. Dim sr As StreamReader
    16. Dim Zeile As String
    17. Dim I As Integer
    18. xls_Appl = New Excel.Application()
    19. xls_Appl.Visible = False
    20. xls_Mappe = xls_Appl.Workbooks.Open(ExcelDatei)
    Copy Pasterino lässt grüßen.

    1. Ich habe Verständnis, wenn Anfänger Option Strict nicht kennen, und sie deshalb auf Off lassen. Aber es explizit noch mal in den Code schreiben... --> Strict On
    2. Was sollen die ganzen reservierten Speicherplätze (durch die Variablen), wenn du sie nicht benutzt ?
    3. Überleg dir was du machen willst: Jeden Schritt einzeln, also das Updaten zuerst (ist ja auch das Laden).
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    Fragglechen schrieb:

    xls_Mappe = xls_Appl.Workbooks.Open(ExcelDatei)
    Nächster Schritt:
    Deine xls_Mappe hat eine Collection Sheets, die alle deine Arbeitsblätter enthält.
    Die kannst du mit For..Each durchloopen.

    In so einem Blatt kannst du suchen und die entsprechenden Schritte codieren.
    z.B. If xls_Blatt.Range("A:A").Find("Adobe Reader") IsNot Nothing Then 'Software gefunden

    @ThePlexian Leider ist das mit dem Office.Interop für Anfänger ein ziemlicher Aufwand mit dem Casten.
    Deshalb sieht man dieses explizite "Option Strict Off" nur allzu häufig.
    Wenn man das mal raus hat, kann man das auch richtig machen, aber die meisten Programmierer sind halt schon froh, wenn überhaupt was geht.

    Sehen wir's positiv:
    Ein explizites "Option Strict Off" bedeutet, dass das restliche Projekt unter "Strict On" läuft.
    Hoffentlich ;)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo.

    Vielen Dank für den Tip. Ich werde das am Wochenende mal ausprobieren.
    Ja ich gestehe den Anfang habe ich mir aus einem Beispiel kopiert :)

    Das Option Strict off habe ich explizit reingeschrieben, da ich auf einer anderen Seite gelesen habe das es ab und zu mal Probleme gibt beim Arbeiten mit Excel.Interopt und Excel allgemein und einige schon an etlichen Stellen Probleme hatten bei der Arbeit mit Excel.
    Ein Kommentar zu dieser Aussage war dann das man in dem Fall Option Strict Off benutzen kann und ein spätes Binden verwenden kann.
    Dies ist ja mit Option Strict On nicht möglich. Darum hatte ich mich an der Stelle für Option Strict Off entschieden