У меня есть пользовательская форма, где у меня есть командная кнопка для просмотра отчетов (может быть любой файл в папке). Если в этой папке n файлов, то при событии щелчка на командной кнопке в пользовательской форме необходимо динамически создавать метки 'n' с именами файлов, отображаемыми в заголовке. Приведенный ниже код выполняется без ошибок, но метки не отображаются в пользовательской форме.
Private Sub cmdViewReports_Click()
Dim row_num As Long
Dim fso As Object
Dim src_path As String
Dim dest_path As String
Dim sub_folder As String
Dim theLabel1 As msforms.Label
Dim inc As Integer
Dim my_files As Object
Dim my_folder As Object
Dim i As Integer
Dim ctrl As Control
'Check if the record is selected in listbox
If Selected_List = 0 Then
MsgBox "No record is selected.", vbOKOnly + vbInformation, "Upload Results"
Exit Sub
End If
'Folder Name to be created as per the 3rd column value in the list
sub_folder = Me.lstDb.List(Me.lstDb.ListIndex, 3)
sub_folder = Replace(sub_folder, "/", "_")
dest_path = "C:\abc\xyz\Desktop\FV\" & sub_folder & "\"
Set fso = CreateObject("scripting.filesystemobject")
If Not fso.FolderExists(dest_path) Then
MsgBox "No reports are loaded"
Exit Sub
End If
Set my_folder = fso.GetFolder(dest_path)
Set my_files = my_folder.Files
i = 1
For Each oFiles In my_files
Set theLabel1 = Me.Controls.Add("Forms.Label.1", "File_name" & i, True)
With theLabel1
.Caption = oFiles.Name
.Left = 1038
.Width = 60
.Height = 12
.Top = 324 + inc
.TextAlign = 1
.BackColor = &HC0FFFF
.BackStyle = 0
.BorderStyle = 1
.BorderStyle = 0
'.Locked = True
.ForeColor = &H8000000D
.Font.Size = 9
.Font.Underline = True
.Visible = True
End With
MsgBox "Label" & i & " Created"
inc = inc + 12
i = i + 1
Next
End Sub
Но при запуске я не вижу метки. В этом случае у меня есть 3 файла в папке, поэтому у меня должно быть 3 ярлыка.
Кроме того, я хочу, чтобы надписи были гиперссылки, а это означает, что после нажатия на ярлык должен отображаться отчет / файлы.
Любая помощь будет высоко оценена. Заранее спасибо.