получение VBA для добавления текста снизу вверх - PullRequest
0 голосов
/ 08 ноября 2010

Я хотел бы добавить текстовый (.txt) файл в обратном направлении, возможно ли это?

В обратном направлении я имею в виду написание текста снизу вверх, а не стандартов сверху вниз.

Почему, потому что txt-файл, который я хочу скомпилировать, читается так, что элементы в верхней части списка имеют приоритет перед элементами в нижней части.

Ответы [ 4 ]

0 голосов
/ 09 ноября 2010

Если он просто пишет каждый абзац или предложение в обратном порядке, чем кажется:

Sub Test()
    Dim currentDocument As Document
    Set currentDocument = ActiveDocument

    Dim sourceDocument As Document
    Set sourceDocument = Documents.Add("c:\words.txt")

    Dim i As Long
    For i = sourceDocument.Paragraphs.Count To 1 Step -1
        currentDocument.Range.InsertAfter sourceDocument.Paragraphs(i).Range.Text
        DoEvents
    Next

    sourceDocument.Close wdDoNotSaveChanges
End Sub
0 голосов
/ 08 ноября 2010

Не уверен, что именно ваши требования, НО самый простой способ в VBA это 1. Добавьте ссылку на Microsoft Scripting Runtime.

Public Sub Reverse()
    Dim lReverseString As String
    Dim lFSO As FileSystemObject
    Set lFSO = New Scripting.FileSystemObject
    With lFSO.OpenTextFile("SourceName", ForReading)
        While Not .AtEndOfStream
            ' Note if you are looking to read a line at at a time use .ReadLine Instead of .Read
            lReverseString = .Read & lReverseString
        Wend
    End With
    ' now you have a string in reverse
    With lFSO.CreateTextFile("TargetName", True, False)
        .Write lReverseString
        .Close
    End With

End Sub

Это базовая форма, которая должна помочь вам.

0 голосов
/ 08 ноября 2010

Как насчет массива? Это не подойдет для очень большого файла:

Dim fs As Object
Dim ts As Object
Dim AllTextArray As Variant

''Late binding, no reference required
Set fs = CreateObject("Scripting.FileSystemObject")
''ForReading=1
Set ts = fs.OpenTextFile("c:\docs\BookX.csv", 1)
AllTextArray = Split(ts.ReadAll, vbCrLf)

For i = UBound(AllTextArray) To 0 Step -1
    Debug.Print AllTextArray(i)
Next
0 голосов
/ 08 ноября 2010

Я не могу придумать другого способа, кроме как создать новый файл, когда вы хотите вставить данные вверху, а затем удалить / переименовать старый и переименовать новый файл в новый.

...