Dateiname aus Excel auslesen und als txt spechern

  • Word

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von MarcoIT.

    Dateiname aus Excel auslesen und als txt spechern

    Hallo vielleicht kann mir irgendjemand helfen. Ich habe eine Worddatei
    mit 610 Seiten die getrennt werden sollen. Dazu habe ich schon ein
    nützliches Makro:

    [.vb]

    Public Sub JedeSeiteInNeuesDokument()
    Dim wdDoc As Document
    Dim wdDocNeu As Document
    Dim wdBereich As Range

    Dim sPfad As String
    Dim optAnsicht As Long

    Dim iSeitenAnz As Integer
    Dim i As Integer
    Dim iDocNum As Integer

    'Verweis auf Dokument setzen:
    Set wdDoc = ActiveDocument

    'Speicher-Pfad für neue Dokumente:
    'Es wird vorausgesetzt, dass das aktive Dokument gespeichert ist
    sPfad = wdDoc.Path & "\" & "Test_"

    'Bildschirmaktualisierung deaktivieren (Flackern wird zumindest vermindert)
    Application.ScreenUpdating = False

    'Einstellung Seiten-Ansicht sichern:
    'optAnsicht = wdDoc.ActiveWindow.View.Type
    optAnsicht = Windows(wdDoc).View.Type

    'Seiten-Ansicht SeitenLayout einstellen:
    Windows(wdDoc).View.Type = wdPageView

    'Cursor zum Anfang des Dokuments:
    wdDoc.Range(0, 0).Select

    'Browser-Eigenschaft einstellen, hier: "Nach Seite durchsuchen"
    'Gibt ein Browser-Objekt zurück, das die Schaltfläche "Objekt für
    'Durchsuchen markieren" auf der vertikalen Bildlaufleiste darstellt
    Application.Browser.Target = wdBrowsePage

    'Dokument-Nr. zum Speichern - Startwert setzen
    iDocNum = 0

    'Anzahl Seiten im Dokument ermitteln
    iSeitenAnz = wdDoc.ComputeStatistics(wdStatisticPages)

    For i = 1 To iSeitenAnz
    'Verweis auf den zu kopierenden Bereich setzen
    Set wdBereich = wdDoc.Bookmarks("\Page").Range

    'Den zu kopierenden Bereich überprüfen, ob Seitenwechsel dabei ist;
    'ggf. den Bereich verkleinern
    If Right(wdBereich.Text, 1) = Chr(12) Then
    wdBereich.SetRange Start:=wdBereich.Start, End:=wdBereich.End - 1
    End If

    'Neues Dokument öffnen, auf Basis derselben Dokumentvorlage
    'wie das Original-Dokument
    Set wdDocNeu = Documents.Add _
    (Template:=wdDoc.AttachedTemplate.FullName)
    'oder auf Basis der Normal.dot:
    'Set wdDocNeu = Documents.Add

    'Formatierten Text -> neue Datei
    wdDocNeu.Content.FormattedText = wdBereich.FormattedText

    'Dokument-Nr. zum Speichern erhöhen
    iDocNum = iDocNum + 1

    'Neues Dokument speichern:
    wdDocNeu.SaveAs FileName:=sPfad & Format(iDocNum, "000")

    'Neues Dokument schließen
    wdDocNeu.Close

    'Dokument aktivieren
    wdDoc.Activate

    'Zur nächsten Seite im Original-Dokument wechseln
    Application.Browser.Next
    Next i

    'Ursprüngliche Seiten-Ansicht wieder einstellen
    Windows(wdDoc).View.Type = optAnsicht

    'Cursor zum Anfang des Dokuments
    wdDoc.Range(0, 0).Select

    'Bildschirmaktualisierung aktivieren
    Application.ScreenUpdating = True

    'Verweise freigeben
    Set wdBereich = Nothing
    Set wdDocNeu = Nothing
    Set wdDoc = Nothing
    End Sub

    [./vb]


    Leider habe ich dann eine fortlaufende Nummerierung und ich möchte die
    Spalte "B" die "Name" heißt als Deteinamen einfügen und zusätzlich noch
    das Suffix .txt oder oder direkt dateiname.html.txt damit ich nur das
    txt entfernen muss. Das müsste per Array funktionieren. Am Anfang müssen
    irgendwie die ganzen Dateinamen aus der Excel-Datei in ein Array
    einlesen werden und beim Namen für das Speichern den Array Index
    parallel zu den Seiten hoch zählen und so den gesamten Dateinamen
    zusammenbasteln. Also bei Seite 1 array(1)+".txt" bei der zweiten Seite
    dann array(2)+"txt" und so weiter. als Array Index natürlich eine
    Variable nehmen. Aber ich bin mir nicht sicher wo das in meinen Code
    reingehört. Kann mir irgendjemand helfen. Vielen Dank





    Hier ist eventuell der Code der die Lösung enthält. Bin mir jedoch nicht sicher.


    [.vb]

    Option Explicit

    Sub DateienNamenLesen()

    Dim DateiPath As String

    Dim DateiEndung As String

    Dim DateiName As String

    Dim DateiNamen() As String

    Dim ArrIndex As Integer

    DateiPath = "C:\temp\"

    DateiEndung = "*.xls"

    ArrIndex = 1

    ReDim Preserve DateiNamen(ArrIndex)

    DateiName = Dir(DateiPath & DateiEndung)

    Do While DateiName <> ""

    ArrIndex = ArrIndex + 1

    ReDim Preserve DateiNamen(ArrIndex)

    DateiNamen(ArrIndex) = DateiName

    DateiName = Dir

    Loop

    End Sub

    [./vb]


    Sorry @ MarcoIT...Ich habe es geändert ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vba-newbi“ ()