powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
4 сообщений из 4, страница 1 из 1
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
    #37763488
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

на VBA всего второй день, а надо написать макрос.

Задача такова: в файл xls вставляются записи в первый столбец, затем во второй и другие необходимо добавить записи из таблички БД, приравнивая по первому столбцу.
Нашел несколько примеров, но до конца сделать не получается. Подскажите, в чем неправ?

Option Compare Text
Dim WithEvents Cnn As ADODB.Connection
Dim Cmd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim WithEvents QT As QueryTable
' INSERTING DATA
Private Sub ImportButt_Click()

'------------------------------------Inserting data---------------------------

i = 2
Set Cnn = New ADODB.Connection
Cnn.ConnectionString = "Provider=SQLOLEDB;Server=***,***;Trusted_Connection=Yes"
Cnn.ConnectionTimeout = 0
Cnn.CommandTimeout = 0
Cnn.Open
Application.StatusBar = "Inserting data..."
Set Rst = New ADODB.Recordset
Rst.Open "Select *** From *** where ***", Cnn, adOpenDynamic, adLockOptimistic
With Sheets("Import")
Do While Not (.Cells(i, 1) = "")
Rst.AddNew
Rst.Fields(0) = .Cells(i, 2)
Rst.Fields(1) = .Cells(i, 3)
Rst.Fields(2) = .Cells(i, 4)
Rst.Fields(3) = .Cells(i, 5)
Rst.Fields(4) = .Cells(i, 6)
Rst.Fields(5) = .Cells(i, 7)
Rst.Fields(6) = .Cells(i, 8)
i = i + 1
Loop
End With
Rst.Update
Rst.Close
Set Rst = Nothing
Cnn.Close
Set Cnn = Nothing
Application.StatusBar = False
MsgBox "Done!"
End Sub



В ответ на это, при запуске он ругается,что нет прав на запись в таблицу ***, но ведь я туда писать и не хочу совсем..Что не так?


Спасибо всем большое заранее!

Еще подскажите плиз доку для начинающих
...
Рейтинг: 0 / 0
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
    #37763515
QValD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LudeV Rst.AddNew
Rst.Fields(0) = .Cells(i, 2)
Rst.Fields(1) = .Cells(i, 3)
Rst.Fields(2) = .Cells(i, 4)
Rst.Fields(3) = .Cells(i, 5)
Rst.Fields(4) = .Cells(i, 6)
Rst.Fields(5) = .Cells(i, 7)
Rst.Fields(6) = .Cells(i, 8)


В ответ на это, при запуске он ругается,что нет прав на запись в таблицу ***, но ведь я туда писать и не хочу совсем..Что не так?

Ещё как пишите!
Вы ,грубо говоря, открываете таблицу и забиваете ее значениями с листа, причем в цикле.
...
Рейтинг: 0 / 0
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
    #37763531
LudeV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
QValD,

да, я уже потом понял,что делаю в обратную сторону.


посоветуйте простенькую доку для чтения. Чтобы не задавать тупых вопросов тут
...
Рейтинг: 0 / 0
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
    #37765020
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно примерно так:
Код: vbnet
1.
2.
3.
4.
5.
...
    Rst.Open "Select *** From *** where ***", Cnn, adOpenDynamic, adLockOptimistic
    Sheets("Import").Cells(2,2).CopyFromRecordset Rst
    Rst.Close
...


И вообще, загнать в отдельную процедуру + позднее связывание:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub ODBCGetData(ByVal cnnOpen As String, ByVal rstOpen As String, ByRef oDestRange As Object)
    
    Dim cnn as object, rst as object

    Set cnn = CreateObject("adodb.connection")
    cnn.Open cnnOpen
    
    Set rst = CreateObject("adodb.recordset")
    rst.Open rstOpen, cnn
    
    oDestRange.CopyFromRecordset rst
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub

...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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