パワーポイントのVBAコードを使用して1でテキストファイル1から行を読み込む方法?

StackOverflow https://stackoverflow.com/questions/1719342

質問

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

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

どのように私はそれが同じファイルから別の後に繰り返し1本のラインを読むことができますか?私は右、ここでループを使用する必要があり、推測しますか?私はそれが最初の反復でファイルの最初の行を読み取る必要がある、第2の繰り返しで二行目、すべてのラインまでの三第三に1つというようにが読み取られています。どのように私はそれを行うことができますか?

重要加え:私は1つずつ行1を操作するためのコードが必要 - ないすべてを一度に

役に立ちましたか?

解決

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

他のヒント

あなたはルーチンを扱う内蔵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
あなたが言うことができるので、

あなたがWindowsスクリプトホストオブジェクトモデルへの参照*を追加することができ、それは、FileSystemObjectのオブジェクトをお届けします。

Dim fs As FileSystemObject
Dim f As TextStream

あなたはライブラリを探索するさまざまなプロパティとオブジェクトブラウザを確認するためにインテリセンスを使用できるようになりますどのます。

*コードウィンドウで、[ツール]を選択し、参照して、必要なライブラリの横のボックスにチェックを入れます。

私は、テキストファイルを読み込んで、テキスト中の各文のための新しいスライドを挿入する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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top