【问题标题】:How can I import a text file into PowerPoint with vba?如何使用 vba 将文本文件导入 PowerPoint?
【发布时间】:2013-07-12 12:38:37
【问题描述】:

我习惯在 Word 中做这种事情,但在 PowerPoint 中做同样事情的方法却大不相同。

我有一个包含文本文件列表的网络文件夹。我希望能够单击幻灯片上的文本字段,然后单击自定义菜单上的导入按钮。然后我在对话框中选择一个文本文件并将文本导入到我指定的区域。

我已经在 PowerPoint 2010 中构建了自定义菜单,并添加了一些其他宏,但我无法确定要使用的方法。

谁能给我一个开始?

这是我正在玩的代码:

Sub GetTextFromLibrary()

Dim lCurrentView As Long
Dim SlideNum As Integer
Dim Name$
Dim OldName$

'Store the default shape name to reset later
OldName$ = ActiveWindow.Selection.ShapeRange(1).Name
'Now rename the shape to work with it
Name$ = "temp01"

MsgBox "You are on slide: " & _
        OldName$, vbInformation

ActiveWindow.Selection.ShapeRange(1).Name = Name$

  ' Get the current view type.
  lCurrentView = ActiveWindow.ViewType

  ' Make sure that PowerPoint is in Slide view.
  ' ActiveWindow.Selection.SlideRange.SlideNumber produces an error if
  ' you are using any other view.
  If lCurrentView = ppViewNormal Then
     ' Display the slide number.
     'MsgBox "You are on slide: " & _
        ActiveWindow.Selection.SlideRange.SlideNumber, vbInformation

    SlideNum = ActiveWindow.Selection.SlideRange.SlideNumber

    MsgBox "You are on slide: " & _
        SlideNum, vbInformation

' Dim a variable as a specific object type
Dim oShape As Shape

' Set it to "point" to a specific shape:
Set oShape = ActivePresentation.Slides(SlideNum).Shapes("temp01")

'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Declare a variable for the directory path.
Dim directory As String
'Set the directory path
directory = "C:\Documents and Settings\<USER>\Desktop\PitchTemplateLibrary\Quotes"
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)

'Declare a variable to contain the path
'of each selected item. Even though the path is aString,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant

'Use a With...End With block to reference the FileDialog object.
With fd
    'Change the initial directory\filename
    .InitialFileName = directory
    'Use the Show method to display the File Picker dialog box and return the user's action.
    'The user pressed the button.
    If .Show = -1 Then

        'Step through each string in the FileDialogSelectedItems collection.
        For Each vrtSelectedItem In .SelectedItems

Dim fs As Object
Dim f As Object
Const ForReading = 1, ForWriting = 2, ForAppending = 3

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(vrtSelectedItem, 1, 0)

' Put the text into the text box
oShape.TextFrame.TextRange.Text = f 'oShape IS EMPTY, BUT CAN"T SEE WHY.

        Next vrtSelectedItem
    'The user pressed Cancel.
    Else
    End If
End With

' Until we release the memory used by oShape
Set oShape = Nothing

ActiveWindow.Selection.ShapeRange(1).Name = OldName$

  Else
     ' PowerPoint is not in slide view.
     MsgBox "You must be in slide view to run this macro.", _
        vbInformation
  End If


'Set the object variable to Nothing.
Set fd = Nothing

End Sub

【问题讨论】:

  • 也许您可以添加您的 ms-word 代码作为参考。这将有助于了解您正在尝试做什么
  • 在 Powerpoint 中获取文本并将其放入一个形状中。您希望在 Powerpoint 中的哪个位置添加文本?什么是“方法”有什么不同?贴一些Word代码!
  • 嗨,我添加了工作代码,让您更好地了解我想要做什么。任何帮助或建议将不胜感激。

标签: vba powerpoint


【解决方案1】:

用于设置 TextBox 或其他 Shape 的文本的 PowerPoint 代码是:

    ActivePresentation.Slides(1).Shapes(3).TextFrame.TextRange _
    = "Hello there"

【讨论】:

  • 谢谢安迪。看看我添加到原始问题中的工作代码。您的意见将不胜感激。
【解决方案2】:

我希望能够单击幻灯片上的文本字段,然后单击自定义菜单上的导入按钮。然后我在对话框中选择一个文本文件,并将文本导入到我指定的区域。

' CYA
If Not ActiveWindow.Selection.Type = ppSelectionText Then
  MsgBox "Select some text first"
  Exit Sub
End if

' You might also want to allow for the case where the user has
' selected a rectangle or other shape rather than a text range.
' You could add the text to the shape as well.

With ActiveWindow.Selection.TextRange
  .TextFrame.Text = "Text you've read from the chosen file"
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-06
    • 2015-02-23
    • 2017-04-15
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多