powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Внести Данные из Recordset в ListBox на пользовательской форме
3 сообщений из 3, страница 1 из 1
Внести Данные из Recordset в ListBox на пользовательской форме
    #36269868
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вношу данные в открытый файл из закрытого файла на лист.

Но не получается одновременно внести данные в ListBox.


Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
Sub ЗАПРОС()
' It will copy the Header row also (the last two arguments are True)
' Change the last argument to False if you not want to copy the header row
    
 ' СНИМАЕМ  ЗАЩИТУ ЛИСТА
 ActiveSheet.Unprotect Password:="591777"
 
    GetData ThisWorkbook.Path & "\БАЗА_ДАННЫХ1.xls", "Лист1", _
            "A1:F6500", Sheets("Лист1").Range("A1"), True, True
  ' СТАВИМ ЗАЩИТУ НА ЛИСТ
ActiveSheet.Protect Password:="591777", DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub


Public Sub GetData(SourceFile As Variant, SourceSheet As String, _
                   SourceRange As String, TargetRange As Range, Header As Boolean, UseHeaderRow As Boolean)
' 30-Dec-2007, working in Excel 2000-2007
    Dim rsCon As Object
    Dim rsData As Object
    Dim szConnect As String
    Dim szSQL As String
    Dim lCount As Long

    ' Create the connection string.
    If Header = False Then
        If Val(Application.Version) <  12  Then
            szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=" & SourceFile & ";" & _
                        "Extended Properties=""Excel 8.0;HDR=No"";"
        Else
            szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                        "Data Source=" & SourceFile & ";" & _
                        "Extended Properties=""Excel 12.0;HDR=No"";"
        End If
    Else
        If Val(Application.Version) <  12  Then
            szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=" & SourceFile & ";" & _
                        "Extended Properties=""Excel 8.0;HDR=Yes"";"
        Else
            szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                        "Data Source=" & SourceFile & ";" & _
                        "Extended Properties=""Excel 12.0;HDR=Yes"";"
        End If
    End If

    If SourceSheet = "" Then
        ' workbook level name
        szSQL = "SELECT * FROM " & SourceRange$ & ";"
    Else
        ' worksheet level name or range
        szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];"
    End If

   ' On Error GoTo SomethingWrong

    Set rsCon = CreateObject("ADODB.Connection")
    Set rsData = CreateObject("ADODB.Recordset")

    rsCon.Open szConnect
    rsData.Open szSQL, rsCon,  0 ,  1 ,  1 

    ' Check to make sure we received data and copy the data
    If Not rsData.EOF Then

        If Header = False Then
            TargetRange.Cells( 1 ,  1 ).CopyFromRecordset rsData
        Else
            'Add the header cell in each column if the last argument is True
            If UseHeaderRow Then
                For lCount =  0  To rsData.Fields.Count -  1 
                    TargetRange.Cells( 1 ,  1  + lCount).Value = _
                    rsData.Fields(lCount).Name
                Next lCount
                TargetRange.Cells( 2 ,  1 ).CopyFromRecordset rsData
            Else
                TargetRange.Cells( 1 ,  1 ).CopyFromRecordset rsData
            End If
        End If

    Else
        MsgBox "No records returned from : " & SourceFile, vbCritical
    End If
    
UserForm1.Show

'НЕ ПОЛУЧАЕТСЯ ВСТАВИТЬ ДАННЫЕ
UserForm1.ListBox1.List = rsData

    ' Clean up our Recordset object.
    rsData.Close
    Set rsData = Nothing
    rsCon.Close
    Set rsCon = Nothing
    Exit Sub

SomethingWrong:
    MsgBox "The file name, Sheet name or Range is invalid of : " & SourceFile, _
           vbExclamation, "Error"
    On Error GoTo  0 

End Sub

ЧТО ТО НЕ ПОЛУЧАЕТСЯ.

Код: plaintext
UserForm1.ListBox1.List = rsData

Но Что?
...
Рейтинг: 0 / 0
Внести Данные из Recordset в ListBox на пользовательской форме
    #36270153
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документацию пробовали читать?

Во-первых:
CopyFromRecordset Method
After copying is completed, the EOF
property of the Recordset object is True .


Во-вторых:
List Property
A list is a variant array ; each item in the list has a row number and a column number.
...
Рейтинг: 0 / 0
Внести Данные из Recordset в ListBox на пользовательской форме
    #36270230
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно ссылочку, хоть на английском?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Внести Данные из Recordset в ListBox на пользовательской форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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