Заполнение формы listview файлами и эскизами

#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 /…