#vba #powerpoint
#vba #powerpoint
Вопрос:
Я пытаюсь создать надстройку для powerpoint, которая позволяет пользователю выбирать каталог в выпадающем списке, а затем получает список слайдов PowerPoint с эскизами, отображаемыми в форме listview. Затем пользователь должен иметь возможность выбрать эскиз и добавить слайды к текущей презентации, над которой он / она работает. (что-то вроде доступа к персональной библиотеке слайдов непосредственно из power point).
У меня есть общий код для заполнения списка. Но я получаю ошибку типа, которую я не знаю, как исправить.
Private Sub CommandButton1_Click()
Dim fs, f, f1, fc, s As String
Dim folderspec As String
folderspec = "U:PowerPointFiles"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.SubFolders
ComboBox1.Clear
For Each f1 In fc
ComboBox1.AddItem f1.Name
Next f1
'ComboBox1.Activate --> doesnt' work
'Application.SendKeys "^{F4}" --> doesnt' work
End Sub
Private Sub ComboBox1_Change()
Dim fs, f, f1, MyFiles, s As String
Dim MyFolder As String
MyFolder = "U:Methodenpower point trialsAddin ProjekteSlide Library Addin" amp; ComboBox1
MyFiles = Dir(MyFolder amp; "*.pptx")
ListView1.ListItems.Clear
Do While MyFiles <> ""
ListView1.ListItems.Add (MyFiles) --> Type mismatch
MyFiles = Dir
Loop
End Sub
Результатом должен быть список файлов .ppt в ListView, включая ссылки.
Исходя из этого, мне нужно создать код для добавления миниатюр.
Комментарии:
1. Каков точный текст сообщения об ошибке и в какой строке оно появляется?
2. ListView1.ListItems. Добавить (MyFiles) —> Несоответствие типов
Ответ №1:
Извините … пропустил тот факт, что вы уже отметили проблемную строку кода.
Я закомментировал несколько строк вашего исходного кода и добавил небольшие изменения:
Private Sub CommandButton1_Click()
' You don't use all these variables, so no need to dim them here
' Dim fs, f, f1, MyFiles, s As String
Dim MyFiles As String
Dim MyFolder As String
'MyFolder = "U:Methodenpower point trialsAddin ProjekteSlide Library Addin" amp; ComboBox1
' Substituted a folder that exists on my system and changed the filespec
' form *.PPTX to *.* to ensure some results at my end while testing.
MyFolder = "C:Temp"
MyFiles = Dir(MyFolder amp; "*.*")
' ListView1.ListItems.Clear
ListBox1.Clear
Do While MyFiles <> ""
'ListView1.ListItems.Add (MyFiles) '--> Type mismatch
ListBox1.AddItem (MyFiles)
MyFiles = Dir
Loop
End Sub
Комментарии:
1. Я понимаю, что мне нужно использовать ListView вместо ListBox, чтобы добавить thumbnaisl позже. Можете ли вы адаптировать код для использования ListView вместо формы ListBox? Вот где я застрял.
Ответ №2:
Я нашел решение:
Private Sub ComboBox1_Change()
Dim strLoad As String
Dim lvwItem As ListItem
Dim MyFolder As String
ListView1.ListItems.Clear
MyFolder = "U:Methodenpower point trialsAddin ProjekteSlide Library Addin" amp; ComboBox1
strLoad = Dir(MyFolder amp; "*.*")
Do While strLoad > vbNullString
Set lvwItem = ListView1.ListItems.Add(, , strLoad)
strLoad = Dir
Loop
End Sub
Комментарии:
1. @Steve Rindsberg: Есть идеи, как я могу отображать эскизы в этом listview?
2. Это не то, что мне приходилось делать, но я бы, наверное, начал с этого: mrexcel.com/forum/excel-questions /…