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

на 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
20.04.2012, 16:36
    #37763515
QValD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
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
20.04.2012, 16:41
    #37763531
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
QValD,

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


посоветуйте простенькую доку для чтения. Чтобы не задавать тупых вопросов тут
...
Рейтинг: 0 / 0
22.04.2012, 11:26
    #37765020
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз
Можно примерно так:
Код: 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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / макрос, который будет брать из таблицы значения=списку в sheet. подскажите плз / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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