Тема: HTA: Передача массива в процедуру через Button
Нашел пример как можно передать массив в процедуру через call
Dim arrTemp
arrTemp = Array("a", "b", "c")
Call MySub(arrTemp)
WScript.Quit 0
Sub MySub(arrTest())
For Each s In arrTest
WScript.Echo s
Next
End SubНо не могу понять как можно передать массив в процедуру при нажатии на кнопку. Например "Проверка выбранных файлов"
Case "OUT"
Set objFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Выберите каталог размещения файлов:", &H1 Or &H10 Or &H200, &H11)
If objFolder Is Nothing Then
MsgBox "Не выбран каталог размещения файлов"
DynamicContent_Div.InnerHTML = "Не выбран каталог размещения файлов"
Else
asdf = objFolder.Items.Item.path
'<!--#######################[ Checkbox создание меню#########-->
sDinamicContent = sDinamicContent & "<Form Name=ChkBoxFrm>"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(asdf)
Dim MyArray1
For Each File In Folder.Files
sDinamicContent = sDinamicContent & "<input style=""background-color:#00ff00"" name=""File.Name"" value=""File.Name"" type=""checkbox""/>" & File.Name & "<br>"
MyArray1 = File.Name
'MsgBox MyArray1
Next
'Call CheckChkBx(arrTemp)
sDinamicContent = sDinamicContent & "<input style=""background-color:#00ff00"" name=""ChkBx1"" Checked value=""Box1"" type=""checkbox""/>" & "<br>"
sDinamicContent = sDinamicContent & "<input style=""background-color:#ffff00"" name=""ChkBx2"" value=""Box2"" type=""checkbox""/>" & "<br>"
sDinamicContent = sDinamicContent & "<input style=""background-color:#ff0000"" name=""ChkBx3"" value=""Box3"" type=""checkbox""/>" & "<br>"
sDinamicContent = sDinamicContent & "<input type=""Button"" Value=""Проверка выбранных файлов"" onclick=""CheckChkBx"" />" & "<br>"
sDinamicContent = sDinamicContent & "</Form>"
DynamicContent_Div.InnerHTML = sDinamicContent
End If
Set objFolder = Nothing
Обработка процедуры, но в ней не доступен массив MsgBox выводит пустое сообщение вместо значения которое было заложено в массиве ранее:
'<!--#######################[ Checkbox Вот здесь нужно определить выбор файлов с путями и поместить в массив ]#######################-->
Sub CheckChkBx
MsgBox (MyArray1)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Dim MyArray1
For Each File In Folder.Files
MyArray1 = File.Name
Next
'MsgBox MyArray1
Set CBForm = Document.ChkBoxFrm
If CBForm.ChkBx1.Checked Then ChkBx1 = CBForm.ChkBx1.Value & VBCRLF
If CBForm.ChkBx2.Checked Then ChkBx2 = CBForm.ChkBx2.Value & VBCRLF
If CBForm.ChkBx3.Checked Then ChkBx3 = CBForm.ChkBx3.Value & VBCRLF
WhatsChecked = ChkBx1 & ChkBx2 & ChkBx3 & MyArray1
If WhatsChecked = "" Then
MsgBox "You Didn't Select Anything", 64,"Checkbox Selections"
Else
MsgBox "You Selected:" & vbcrlf & WhatsChecked, 64,"Checkbox Selections"
End If
ChkBx1 = ""
ChkBx2 = ""
ChkBx3 = ""
MyArray1 = ""
End Sub 'CheckChkBxНапример (прикрепил файл HTA) и при нажатии на кнопку "Отправка файлов" выбираем директорию, далее выбираем файлы и при нажатии кнопки "Проверка выбранных файлов" в сообщении должно показаться перечисленные имена файлов. (В процедуре нужно перебрать массив и сравнить значения)

