mehrere Dateien öffnen und zählen

profimong

Grünschnabel
Hallo folgendes Problem ich möchte über einen FileDialog mehrere Word-Dateien öffnen dann die gesamt Seitenanzahl auslesen und diese Ausgeben.
Also als Bsp.:
gewählte Dateien: 4
Seitenzahl gesamt: 32

mit meinem Code kann ich im Moment zwar mehrere Dateien auswählen aber es wird nur eine bearbeitet.


Visual Basic:
Option Explicit On
Imports System
Imports System.IO
Imports Microsoft.Office.Interop.Word
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.Configuration
Imports System.Resources
Imports System.Drawing
Imports System.Drawing.Drawing2D



Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles Button2.Click
    Dim WordAppl As New Microsoft.Office.Interop.Word.Application
    ' Word-Application
    Dim Dokument As New Microsoft.Office.Interop.Word.Document
    ' Word-Dokument
    Dim file As Object
    Dim Seiten As Integer
    Dim NumSections As Integer
    Dim zeichen
    Dim datei
    Dim openfiledialog1 As OpenFileDialog = New OpenFileDialog()
    openfiledialog1.Multiselect = True
    openfiledialog1.InitialDirectory = "c:\"
    openfiledialog1.Filter = "Worddokumente (*.doc)|*.doc"
    openfiledialog1.FilterIndex = 2
    openfiledialog1.RestoreDirectory = True
    Dim res As DialogResult = openfiledialog1.ShowDialog()
    
    datei = openfiledialog1.FileName
    Dokument = WordAppl.Documents.Add(openfiledialog1.FileName)
    WordAppl.Application.Visible = False
    zeichen = WordAppl.ActiveDocument.Characters.Count
    NumSections = WordAppl.ActiveDocument.Sections.Count
    
    For Each file In openfiledialog1.FileNames
    
        Seiten = _
        (WordAppl.ActiveDocument.ActiveWindow.Panes(1).Pages.Count)
    
    Next


    Label1.Text = ("Dokument: " & datei)
    Label2.Text = ("Seiten gesamt: " & Seiten)


    WordAppl.ActiveDocument.Close(0)
    WordAppl.Quit(0)



End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles Button1.Click
    Me.Close()
End Sub


End Class
wer kann mir hilfestellung für die benögtigte schleife geben. Danke
 
Zuletzt bearbeitet von einem Moderator:
Hi,

ich würde sagen, der Fehler steckt hier:

Visual Basic:
    datei = openfiledialog1.FileName
    Dokument = WordAppl.Documents.Add(openfiledialog1.FileName)
    '...
    For Each file In openfiledialog1.FileNames
        Seiten = WordAppl.ActiveDocument.ActiveWindow.Panes(1).Pages.Count
    Next

Mit OpenFileDialog.FileName greifst du immer nur auf einen der Dateinamen zu, die ausgewählt sind. In der Schleife setzt du die Seitenzahl immer wieder neu auf die Anzahl der Seiten in diesem Dokument, ohne die anderen ausgewählten Dateien zu berücksichtigen.

Du solltest aber lieber in der Schleife auf den jeweiligen Dateinamen zugreifen, das entsprechende Word-Dokument öffnen und den Seitenzähler um die Anzahl der Seiten im Dokument erhöhen. Korrekt müsste es also (etwas gekürzt) etwa so aussehen:
Visual Basic:
   For Each file In openfiledialog1.FileNames
       WordAppl.Documents.Add(file)
       Seiten = Seiten + WordAppl.ActiveDocument.ActiveWindow.Panes(1).Pages.Count
   Next

Habe ich zwar nicht getestet, dürfte aber so (oder zumindest so ähnlich) funktionieren.

Grüße, D.
 

Neue Beiträge

Zurück