Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Стринг в массив листов в Excel / 4 сообщений из 4, страница 1 из 1
04.12.2015, 18:11
    #39120941
HypeR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стринг в массив листов в Excel
Добрый день всем форумчинам!
В базе есть функция, которая возвращает string, в котором перечень листов Excel ,которые надо скрывать
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Function chooseSheet2Hide() as String
Dim ch As Byte
chooseSheet2Hide= ""
ch = Forms!Форма1!grH
Select Case ch
Case 1
chooseSheet2Hide= "Лист1, Лист2"
Case 2
chooseSheet2Hide= "Лист2, Лист3"
End Select
End Function


Потом пытаюсь открыть книгу Excel, выбрать массив листов и скрыть их
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim xlApp As Object, xlWb As Object, spLists  as String
Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(ReportName)
spLists = chooseSheet2Hide()
xlApp.Sheets(Array("& spLists &")).Select
xlApp.ActiveWindow.SelectedSheets.Visible = False


Выдает ошибку Subscript out of Range ..... названия листов такие существуют
Код: vbnet
1.
2.
?spLists 
Лист1, Лист2


Пытаюсь обрамить в кавывчки
spLists$ = Replace(chooseSheet2Hide, chooseSheet2Hide, Chr(34) & chooseSheet2Hide & Chr(34))
Ошибка та же, хотя
Код: vbnet
1.
2.
?spLists 
"Лист1, Лист2"


Как правильно передать список листов ?
...
Рейтинг: 0 / 0
04.12.2015, 18:51
    #39120979
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стринг в массив листов в Excel
HypeR,
Проверил такой код (см. ниже) - замечательно отрабатывает:)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Option Compare Database

Public Function chooseSheet2Hide() As Variant
Dim bbb(2)
ch = 2
Select Case ch
    Case 1
        bbb(0) = "Лист1"
        bbb(1) = "Лист2"
    Case 2
        bbb(0) = "Лист2"
        bbb(1) = "Лист3"
End Select
chooseSheet2Hide = bbb
End Function

Public Function fff()
Dim vvv() As Variant
Dim xlApp As Object, xlWb As Object
Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(CurrentProject.Path & "\Книга1.xls")
vvv = chooseSheet2Hide()
For i = 0 To UBound(vvv) - 1
    xlApp.Sheets(CStr(vvv(i))).Select
    xlApp.ActiveWindow.SelectedSheets.Visible = False
Next i
xlApp.Visible = True
End Function
...
Рейтинг: 0 / 0
04.12.2015, 18:51
    #39120980
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стринг в массив листов в Excel
Код: vbnet
1.
2.
3.
4.
5.
spLists = chooseSheet2Hide()
arrLists = Split(spLists, ",")
For i = LBound(arrLists) To UBound(arrLists)
    xlWb.Sheets(arrLists(i)).Visible = False
Next i
...
Рейтинг: 0 / 0
04.12.2015, 19:38
    #39121011
HypeR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стринг в массив листов в Excel
Akina, guest_rusimport, Благодарю!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Стринг в массив листов в Excel / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]