Я использую VBA в PowerPoint для обновления ссылок на объекты Excel в своей PowerPoint, и все работает хорошо. Единственная проблема, с которой я сталкиваюсь, заключается в том, что иногда диалоговое окно «Выбрать файл» открывается за активной PowerPoint, и единственный способ выбрать его - CTRL + ALT + Del и выбрать «Выбор файла Excel» и установить его как активный. Есть ли способ сделать это всегда активным диалоговым окном при его открытии? Вот код, я использую:GetOpenFilename открывает диалоговое окно за презентацией PowerPoint
Sub UpdateLinks()
Dim sld As Slide
Dim sh As Shape
Dim strNms As String
Dim intI As Integer
Dim strNewPath
Dim ExcelFile
Dim exl As Object
Set exl = CreateObject("Excel.Application")
'Set exl = exl.ActiveWindow
'exl.Active = True
'Open a dialog box to promt for the new source file.
ExcelFile = exl.Application.GetOpenFilename(, , "Select Excel File")
'Go through every slide
For Each sld In ActivePresentation.Slides
For Each sh In sld.Shapes
If sh.Type = msoLinkedOLEObject Then
With sh.LinkFormat
strNms = .SourceFullName
intI = InStr(1, strNms, "!")
strNewPath = ExcelFile & Mid(strNms, intI, Len(strNms) - intI + 1)
.SourceFullName = strNewPath
End With
End If
Next sh
Next sld
ActivePresentation.UpdateLinks
End Sub
Спасибо.
Предполагая, что вы работаете в этом изнутри РРТ, есть какая-то причина, почему вы не вызывая диалог выбора файла в PPT приложения вместо того, чтобы делать это через Excel? –
Я предполагаю, что единственная причина в том, что это часть кода, которую кто-то еще опубликовал для обновления msoLinkedOLEObjects. Я не уверен, как это сделать с помощью выбора файла PPT. –
Попробуйте сделать приложение Excel видимым перед вызовом метода GetOpenFilename. –