Aus einem Ordner alle Excel Dateien im Hintergrund öffnen. Wie?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Aus einem Ordner alle Excel Dateien im Hintergrund öffnen. Wie?

    Hallo VB Freunde,

    ich habe in einem Ordner sehr viele Excel Dateien die Anzahl variert, zurzeit ca. 25.

    Meine Frage ist:Wie kann ich alle Excel Dateien (aus einem bestimmten Ordner) im Hintergrund öffnen, um dann damit weiter arbeiten zu können.

    Es soll mit 2 Button und einer Text box realisiert werden. Per Button-click soll es möglich sein den ordner zu suchen.

    Nach dem man den Ordner ausgewählt hat steht der Pfad des Ordners in der Textbox1
    Jetzt soll es möglich sein mithilfe des 2. Buttons und der textbox1 die Excel Dateien im Hintergrund zu öffnen.

    Nur wie öffnet man alle Excel Dateien??? ?(

    Das habe ich bis jetzt:

    'Verweise hinzugefuegt

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Dim BrowseFolder As New FolderBrowserDialog
    3. BrowseFolder.ShowDialog()' Browse nach den Ordner
    4. TextBox1.Text = BrowseFolder.SelectedPath' Merke den Pfad
    5. End Sub
    6. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    7. Dim xlApp As New iExcel.Application
    8. Dim xlWorkbookExcelDateien As iExcel.Workbook
    9. Dim xlWorksheetExcelDateien As iExcel.Worksheet
    10. xlWorkbookExcelDateien = xlApp.Workbooks.Open(TextBox1.Text) ' Wie kann ich alle Excel Dateien öffnen???
    11. xlWorksheetExcelDateien = CType(xlWorkbookExcelDateien.Worksheets("Tabelle1"), iExcel.Worksheet)
    12. End Sub


    Vielen Dank für eure Hilfe und Unterstützung!!!!!!!!!!!!!!!
    Ich nehme mal an, Du möchtest alle Sheets in VB öffnen, nicht aber in Excel.
    Also mach Dir eine List(Of iExcel.Worksheet) und hängst dort alle Instanzen rein, etwa so:

    VB.NET-Quellcode

    1. Dim ll As New List(Of Excel.Worksheet)
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. For Each file In System.IO.Directory.GetFiles(TextBox1.Text, "*.xls*", IO.SearchOption.TopDirectoryOnly)
    4. xlWorkbookExcelDateien = xlApp.Workbooks.Open(file)
    5. ll.Add(xlWorkbookExcelDateien)
    6. Next
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für deine Hilfe RoD.

    Leider bekomme ich eine Fehlermeldung

    bei der folgenden Zeile:

    VB.NET-Quellcode

    1. ll.Add(xlWorkbookMaster3PD)
    ' Fehlermeldung lautet:

    'Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Excel.Worksheet" umgewandelt werden. Dieser Vorgang konnte nicht
    'durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{000208D8-0000-0000-C000-000000000046}" aufgrund des
    'folgenden 'Fehlers 'nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

    'Ich habe deinen Teil so implementiert, habe ich was übersehen?

    VB.NET-Quellcode

    1. Imports iExcel = Microsoft.Office.Interop.Excel
    2. Public Class Form1
    3. Dim ll As New List(Of iExcel.Worksheet)
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim BrowseFolder As New FolderBrowserDialog
    6. BrowseFolder.ShowDialog()
    7. TextBox1.Text = BrowseFolder.SelectedPath
    8. End Sub
    9. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    10. Dim xlApp As New iExcel.Application
    11. Dim xlWorkbookMaster3PD As iExcel.Workbook
    12. For Each file In System.IO.Directory.GetFiles(TextBox1.Text, "*.xls*", IO.SearchOption.TopDirectoryOnly)
    13. xlWorkbookMaster3PD = xlApp.Workbooks.Open(file)
    14. ll.Add(xlWorkbookMaster3PD)' hier tacht der fehler auf woran liegt es?
    15. Next
    16. End Sub
    17. End Class


    Es wäre echt nett wenn jmd sagen könnte woran es liegt?

    Danke schön!
    Da musste in die Deklaration der List ghalt genau das richtige reinschreiben, z.B. System.__ComObject.
    Ich hab extra

    RodFromGermany schrieb:

    etwa so
    geschrieben, habs nicht getestet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke RoD!

    ich habe das Problem behoben.

    Jedoch ist immer die letzte Excel Datei im Ordner offen.

    Ich möchte, dass alle offen bleiben und nicht quasi duch das Öffnen der nächsten Excel Datei die vorherige geschlossen wird.


    Momentan läuft er die For each Schleife durch und öffnet nacheinander alle Excel Dateien aber es bleibt dann nur die letzte offen.
    Dann leg Dir eine separate Klasse an für ein Excel-Dokument, und die Instanzen dieser Klasse packst Du dann in die List(Of DEINE_KLASSE).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Pro Datei legst Du Dir eine Instanz mit New an, mach am besten einen Konstruktor mit dem Pfad als Parameter, und jede dieser Instanzen addest Du dieser List(Of ...)

    VB.NET-Quellcode

    1. ll = New List(Of MyClass)
    2. For Each file in AllFiles
    3. Dim inst = New MyClass(file) ' hier wird die Datei geöffnet
    4. ll.Add(inst)
    5. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    :?: :?: :?:
    Das hattest Du doch schon.

    Akki schrieb:

    VB.NET-Quellcode

    1. For Each file In System.IO.Directory.GetFiles(TextBox1.Text, "*.xls*", IO.SearchOption.TopDirectoryOnly)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!