首页 文章

Powerpoint在幻灯片之间插入外部TXT文件中的文本

提问于
浏览
0

我一直在使用下面的代码(不是我的代码)成功让用户打开演示文稿,并从 Headers 幻灯片中,能够从他们计算机上的任何位置选择.txt文件,并让Powerpoint将文本导入Powerpoint,创建符合我设置的主幻灯片格式的幻灯片 .

Sub AddSlides(text As String)
Dim Pre As Presentation
Dim Sld As Slide

Set Pre = ActivePresentation
Set Sld = Pre.Slides.Add(Index:=Pre.Slides.Count + 1, Layout:=1)
Sld.Shapes(1).TextFrame.TextRange = text
End Sub

Sub ReadFile(sFileName As String)

Dim iFileNum As Integer
Dim sBuf As String

' edit this:
'sFileName = "test.csv"

' does the file exist?  simpleminded test:
If Len(Dir$(sFileName)) = 0 Then
    Exit Sub
End If

iFileNum = FreeFile()
Open sFileName For Input As iFileNum

Do While Not EOF(iFileNum)
    Line Input #iFileNum, sBuf
    AddSlides (sBuf)
Loop

' close the file
Close iFileNum

End Sub

Sub SelectFile()

Dim In_file As Variant

Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(Type:=msoFileDialogOpen)

dlgOpen.AllowMultiSelect = False

If dlgOpen.Show = -1 Then
In_file = dlgOpen.SelectedItems.Item(1)
ReadFile (In_file)
End If

End Sub

但是,现在我想处理各个部分,有效地创建 Headers 和结论幻灯片 . 第1部分将包含 Headers 幻灯片和按钮,供用户选择其.txt文件 . 第2节将由一张幻灯片组成,该幻灯片结束了演示文稿 . 我的问题是,当代码从.txt文件生成幻灯片时,它会在第2节中的结论幻灯片之后而不是在第1部分中的 Headers 幻灯片之后放置它们 .

我已经研究过各种代码,用于处理从外部文件导入/插入的部分和代码,并且没有成功地使用它们来实现这一点 .

虽然我希望在第一张和最后一张幻灯片之间生成的幻灯片数量是可变的,但我可以指定在更可行的情况下可以生成多少张幻灯片 . 如果确实需要指定,我也可以先创建幻灯片,然后使用.txt文件中的文本填充它们,如果这是一个更可行的选项 .

感谢任何帮助 .

注意:当前代码将文本导入限制为每张幻灯片上的单行 . 如果有一种简单的方法可以将每个幻灯片包含2行 - 这将非常有用 .

1 回答

  • 0

    好的,我将从放置新幻灯片的位置开始 . 您需要更改addSlides函数,以便将所有幻灯片放在结论幻灯片的位置 . 这很容易,您只需更改索引即可

    Index:=Pre.Slides.Count + 1
    

    Index:=Pre.Slides.Count
    

    使addSlides功能如下:

    Sub AddSlides(text As String)
       Dim Pre As Presentation
       Dim Sld As Slide
    
       Set Pre = ActivePresentation
       Set Sld = Pre.Slides.Add(Index:=Pre.Slides.Count, Layout:=1)
       Sld.Shapes(1).TextFrame.TextRange = text
    End Sub
    

    在第二个问题上,每张幻灯片获得两行文本,这更加困难 . 您需要读取每一行,每次到达第二行时,添加页面,然后重置保持变量 . 像下面这样的东西应该工作:

    Sub ReadFile(sFileName As String)
    
    Dim iFileNum As Integer
    Dim sBuf As String
    Dim bFlag As Boolean
    Dim sHolder As String
    ' edit this:
    'sFileName = "test.csv"
    
    ' does the file exist?  simpleminded test:
    If Len(Dir$(sFileName)) = 0 Then
        Exit Sub
    End If
    
    iFileNum = FreeFile()
    Open sFileName For Input As iFileNum
    bFlag = False
    Do While Not EOF(iFileNum)
        If bFlag = False Then
            Line Input #iFileNum, sBuf
            holder = sBuf
            bFlag = True
        Else
            Line Input #iFileNum, sBuf
            holder = holder & vbCrLf & sBuf
            addSlides (holder)
            holder = ""
            bFlag = False
        End If
    
    Loop
    
    ' close the file
    Close iFileNum
    
    End Sub
    

相关问题