У меня есть слайд-шоу в формате PowerPoint с текстами песен, которые я отображаю на проекторе. У меня также есть папка с документами Word, которые содержат тексты и аккорды для песен, которые необходимы музыканту для исполнения песен. Я хотел бы иметь возможность открывать слайд-шоу, запускать его в режиме докладчика (иметь возможность выбирать слайды из списка), а когда я выбираю слайд для отображения на проекторе, я хотел бы для соответствующего документа Word открыть на другом экране. Моя установка - отображение ноутбука в режиме презентатора, проектор для текстов песен для собрания и монитор для отображения документа Word, содержащего тексты с аккордами. Я бы хотел, чтобы vba закрыл любой открытый документ Word, не закрывая Word (чтобы он оставался там, где я его разместил на дисплее) и открыл документ Word, соответствующий слайду.
Он находил слово открытым, но я не мог видеть ни одного видимого слова. Когда я зашел в диспетчер задач, там было запущено 12 winword.exe. Я убил их всех, а затем изменил код, и он начал делать то, что хотел.
Public Sub OnSlideShowPageChange()
On Error Resume Next
Dim i As Integer
i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition
If IsNull(Application.Presentations(1).Slides(i).Shapes.Range(Array("WordLoc")).TextFrame.TextRange.Text) Then
Exit Sub
End If
Dim wdApp As Word.Application, wdDoc As Word.Document
Set wdApp = GetObject(, "Word.Application")
On Error GoTo 0
If Not wdApp Is Nothing Then
wdApp.Documents.Close (wdDoNotSaveChanges)
On Error GoTo 0
Else
Set wdApp = CreateObject("Word.Application")
End If
Set wdDoc = wdApp.Documents.Open(Application.Presentations(1).Slides(i).Shapes.Range(Array("WordLoc")).TextFrame.TextRange.Text, , True)
On Error GoTo 0
wdApp.Visible = True
wdDoc.Activate
End Sub