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

Powerpoint inserting text from external TXT file between slides

我一直在使用下面的代码(不是我的代码)成功地让用户打开演示文稿并从标题幻灯片中,能够从他们计算机上的任何位置 select 一个 .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

但是,现在我想处理部分,有效地创建标题和结论幻灯片。第 1 部分将包含供用户 select 其 .txt 文件使用的标题幻灯片和按钮。第 2 部分将由一张幻灯片组成,用于结束演示文稿。我的问题是,当代码从 .txt 文件生成幻灯片时,它将它们放在第 2 部分的结论幻灯片之后,而不是第 1 部分的标题幻灯片之后。

我已经研究了各种代码来处理来自外部文件的 importing/inserting 的部分和代码,但没有成功地使用它们来实现这一点。

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

感谢任何帮助。

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

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

Index:=Pre.Slides.Count + 1

Index:=Pre.Slides.Count

添加幻灯片功能如下:

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