powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Список в ячейке
8 сообщений из 8, страница 1 из 1
Список в ячейке
    #34793984
Wild Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.
У меня такой вот вопрос: возможно ли в принципе сделать так, что бы выпадающий список в ячейке Excell заполнялся запросом из Access?
Что-то наподобие Данные/Проверка/Список ... а там уже вместо формулы запрос из Access
Заранее спасибо
...
Рейтинг: 0 / 0
Список в ячейке
    #34794382
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild DaemonВсем доброго дня.
У меня такой вот вопрос: возможно ли в принципе сделать так, что бы выпадающий список в ячейке Excell заполнялся запросом из Access?
Что-то наподобие Данные/Проверка/Список ... а там уже вместо формулы запрос из Access
Заранее спасибо

Привожу пример для файла эксель, я думаю переделать для Access не составит труда. Если составит пиши - поможем

Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Sub Validation_from_Recordset()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Dim myArray As Variant, i As Long, myStr As String



    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & ThisWorkbook.Path & "\" & "Исход.xls;" & _
      "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    
    rst.Open "SELECT F4 FROM [Лист1$]", cnn


myArray = rst.GetRows

For i =  0  To UBound(myArray,  2 )
 If myArray( 0 , i) <> "" Then myStr = myStr & myArray( 0 , i) & ","
Next i
myStr = Left(myStr, Len(myStr) -  1 )


With ThisWorkbook.Sheets("Лист1").Range("H1").Validation
    .Delete
    .Add Type:=xlValidateList, _
         AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, _
         Formula1:=myStr
End With

myArray = ""
myStr = ""
rst.Close
cnn.Close

End Sub
...
Рейтинг: 0 / 0
Список в ячейке
    #34794488
Wild Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во первых спасибо ...
Переделал вот таким нехитрым образом
Код: plaintext
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.
29.
30.
31.
32.
Sub Validation_from_Recordset()


Dim DB As DAO.Database
Dim RS As DAO.Recordset

Dim myArray As Variant, i As Long, myStr As String

Set DB = DAO.OpenDatabase(ThisWorkbook.Path & "\tts.mdb")
Set RS = DB.OpenRecordset("SELECT JuiceFullName FROM ForExcelExport;").Clone

myArray = RS.GetRows(RS.RecordCount)

For i =  0  To UBound(myArray,  2 )
 If myArray( 0 , i) <> "" Then myStr = myStr & myArray( 0 , i) & ","
Next i
myStr = Left(myStr, Len(myStr) -  1 )


With ThisWorkbook.Sheets("Лист1").Range("F6").Validation
    .Delete
    .Add Type:=xlValidateList, _
         AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, _
         Formula1:=myStr
End With

myArray = ""
myStr = ""
RS.Close
DB.Close

End Sub
Но вышел в результате вот такой вот матюк:Application-defined or object-defined error
Ошибку выдает здесь:
Код: plaintext
1.
2.
3.
    .Add Type:=xlValidateList, _
         AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, _
         Formula1:=myStr

И еще .. .вот таким вот макаром мы просто прописываем строку в Formula1 ... но там ведь ограничение на колличество символов ... а у меня записей выходит 586 ... может из-за этого выскакивает ошибка?
или нет? ... подскажите ...
Признаюсь ... я такой способ вставки списка уже юзал ... но вот по причине того, что как раз есть ограничение на кол-во символов, отошел от него ... может я что не так сделал ... подскажите ...
...
Рейтинг: 0 / 0
Список в ячейке
    #34794510
Wild Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал изменить кол-во читаемых записей здесь:
Код: plaintext
myArray = rst.GetRows
Поставил 3 ... потом 5 ... потом 100
На сотке выдало ошибку ... т.е. сделал вывод ... сработало ограничение на колл-во символов ...
А как обойти я не знаю ...
Потому и возник вопрос, а можно ли напрямую рекордсет подключить ... или сделать ссылку на целый массив ...ведь на диапазон же ставится и ограничение соответственно исчезает ...
...
Рейтинг: 0 / 0
Список в ячейке
    #34794705
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дыты из рекодсета на лист кидай
Так ещё проще. Делаешь в ячейке список, ссылающийся на именованный диапазон =ДинДиапазон
Только это можно будет сделать после первого запуска макроса, а то будет ругаться на то что диапазон не существует.
Пример макроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub Validation_from_Recordset2()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & ThisWorkbook.Path & "\" & "Èñõîä.xls;" & _
      "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    
    rst.Open "SELECT F3 FROM [Ëèñò1$]", cnn

With ThisWorkbook.Sheets("Ëèñò2")
    .Range("A1").CopyFromRecordset rst
    ThisWorkbook.Names.Add "ÄèíÄèàïàçîí", _
                           "=" & .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Address(, , , True)
End With
    
rst.Close
cnn.Close

End Sub
...
Рейтинг: 0 / 0
Список в ячейке
    #34794709
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё разик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub Validation_from_Recordset2()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & ThisWorkbook.Path & "\" & "Исход.xls;" & _
      "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
    
    rst.Open "SELECT F3 FROM [Лист1$]", cnn

With ThisWorkbook.Sheets("Лист2")
    .Range("A1").CopyFromRecordset rst
    ThisWorkbook.Names.Add "ДинДиапазон", _
                           "=" & .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Address(, , , True)
End With
    
rst.Close
cnn.Close

End Sub
...
Рейтинг: 0 / 0
Список в ячейке
    #34794916
Wild Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во первых огроманейшее спасибо тебе Deggasad , что не оставляешь без внимания мой вопрос
А теперь позволю себе углубится в суть проблемы
Есть внешний источник данных. В нем хранятся данные о возможных коммутациях и прочие характеристики оборудования, необходимые для формирования задания на производство.
Excel - интерфейсная часть программы. Так вот я при помощи запросов хотел создать списки в ячейках, основываясь на определенные условия. Например: выбрал в одной ячейке из списка наименование, перешол на другую ячейку и в новом списке вижу те возможные коммутации, которые мне нужны. Выбрал нужную коммутацию, перешел на другую ячейку, выбрал производительность ... ну или еще что ... и.т.д.
Т.е. все это увязать с запросами SELECT ... FROM ... WHERE ...
Похоже на динамические списки конечно, описанные в этом же форуме ... но мне надо именно через Access ( и не говорите, что это через жо...) ...
Просто хочется подключить внешний источник данных, коль он есть и в нем хранится необходимая мне информация...
вот ...
так что загружать дополнительно на лист данные, да не в один столбец не хотелось бы ...
Потому возник вопрос, а возможно ли ... ну и так далее (см. выше)
Буду благодарен любой идее и помощи
Еще раз спасибо Deggasad
...
Рейтинг: 0 / 0
Список в ячейке
    #34795061
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild Daemon
так что загружать дополнительно на лист данные, да не в один столбец не хотелось бы ...


Я думаю это самое здравое решение выгружать данные на отдельный лист (пусть он будет скрытым), иначе придётся использовать комбобоксы, т.к. обычный список в ячейке:
- с одной стороны имеет ограничение на длинну вводимого текста
- с другой стороны не может находится во внешнем документе.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Список в ячейке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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