4

このコードは、テキストファイルから1行を読み取ります。

set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\number.txt", 1)
text = file.ReadLine
MsgBox text

同じファイルから次々と繰り返し読み取らせるにはどうすればよいですか?ここでループを使うべきだと思いますよね?すべての行が読み取られるまで、最初の反復でファイルから最初の行を読み取り、2番目の反復で2番目の行を読み取り、3番目の反復で3番目の行を読み取る必要があります。どうすればいいですか?

重要な追加:一度にすべてではなく、各行を1つずつ操作するコードが必要です。

4

4 に答える 4

8

ReadAll()次の方法を使用します。

text = file.ReadAll

(興味深いかもしれません:FileSystemObjectサンプルコード

ループあり:

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, MyFile, FileName, TextLine

Set fso = CreateObject("Scripting.FileSystemObject")

FileName = "c:\testfile.txt"

Set MyFile = fso.OpenTextFile(FileName, ForReading)

'' Read from the file
Do While MyFile.AtEndOfStream <> True
    TextLine = MyFile.ReadLine

    '' Do stuff to TextLine

Loop
MyFile.Close
于 2009-11-12T01:44:58.307 に答える
2

何らかの理由で組み込みのVBAファイル処理ルーチンを使用する場合は、次のようなコードを使用します。

Sub ReadAFileLineByLine()
    Dim InStream As Integer
    InStream = FreeFile()
    Open "C:/tmp/fastsynchtoquesttry_quest.txt" For Input As InStream

    Dim CurrLine As String
    Do While True
        Line Input #InStream, CurrLine
        ' do stuff to CurrLine
        If EOF(InStream) Then Exit Do
    Loop

    Close #InStream
End Sub
于 2009-11-12T14:55:06.660 に答える
0

参照*をWindowsScriptHost Object Modelに追加できます。これは、FileSystemObject Objectで役立ちます。これは、次のように言うことができるためです。

Dim fs As FileSystemObject
Dim f As TextStream

これにより、インテリセンスを使用してさまざまなプロパティを確認し、オブジェクトブラウザを使用してライブラリを探索できます。

*コードウィンドウで、[ツール]、[参照]の順に選択し、目的のライブラリの横にあるチェックボックスをオンにします。

于 2009-11-12T01:48:08.147 に答える
-1

テキストファイルを読み取り、テキストの各文に新しいスライドを挿入するVBAルーチンを作成しました。

まず、スライド#1に、「生成」という名前のマクロを呼び出すボタンを追加します。

ソースコードは次のとおりです。

Const DEFAULT_SLIDE = 1 ' the slide to copy the layout style from
Const MARGIN = 50       ' margin of the generated textbox

Sub generate()
    Dim txtFile As String   ' text file name
    Dim fileNo As Integer   ' file handle
    Dim buffer As String    ' temporary string buffer
    Dim sentence() As String    ' the main array to save sentences
    Dim i, total As Integer
    Dim myLayout As CustomLayout
    Dim mySlide As Slide
    Dim myShape As Shape
    Dim myWidth, myHeight As Integer    'slide width and height


    txtFile = "text2sample.txt"
    txtFile = ActivePresentation.Path & "\" & txtFile   'textfile should be in the same Dir as this ppt

    If Len(Dir$(txtFile)) = 0 Then
        MsgBox txtFile & " file not found."
        Exit Sub
    End If

    'Initialize array
    ReDim sentence(0)

    'get file handle number
    fileNo = FreeFile()
    Open txtFile For Input As #fileNo

    i = 0
    Do While Not EOF(fileNo)
        Line Input #fileNo, buffer  'read & save sentences line by line
        ReDim Preserve sentence(i + 1)  ' increase 1 more array
        sentence(i) = LTrim(RTrim(buffer))
        i = i + 1
    Loop
    Close #fileNo

    total = i
    Randomize   ' for random color

    With ActivePresentation.PageSetup
        myWidth = .SlideWidth - MARGIN  'get width and height
        myHeight = .SlideHeight - MARGIN
    End With

    For i = 0 To total
        Set myLayout = ActivePresentation.Slides(DEFAULT_SLIDE).CustomLayout
        'add a slide like slide #1
        Set mySlide = ActivePresentation.Slides.AddSlide(DEFAULT_SLIDE + 1 + i, myLayout)
        'add a textbox with margin
        Set myShape = ActivePresentation.Slides(DEFAULT_SLIDE + 1 + i).Shapes. _
        AddTextbox(msoTextOrientationHorizontal, MARGIN, MARGIN, myWidth, myHeight)
        With myShape
            'add a sentence
            .TextFrame.TextRange.Text = sentence(i)
            .TextFrame.TextRange.Font.Size = 60
            ' color 255 is too bright. Pick a less bright color (200)
            .TextFrame.TextRange.Font.Color.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))
            .TextFrame.TextRange.Font.Bold = msoTrue
            .TextFrame.TextRange.Font.Shadow = msoTrue
            ' If you want to change the color of the shape
            '.Fill.ForeColor.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))
            '.Fill.BackColor.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))
            '.Fill.Solid
        End With
        'add a textbox for slideshow progress ex) 1/100
        Set myShape = ActivePresentation.Slides(DEFAULT_SLIDE + 1 + i).Shapes. _
        AddTextbox(msoTextOrientationHorizontal, 0, 0, 150, 20)
        With myShape
            .TextFrame.TextRange.Text = "( " & i & " /" & total & " )"
            .TextFrame.TextRange.Font.Size = 20
            .TextFrame.TextRange.Font.Color.RGB = RGB(100, 100, 100)
        End With
    Next

    MsgBox total & " Slides were added.", vbInformation

End Sub

ファイルのダウンロード:http: //konahn.tistory.com/attachment/cfile8.uf@2175154C573D3BC02A2DFA.pptm

于 2016-05-19T04:30:48.267 に答える