Страницы: 1
RSS
VBA: объединить данные разных листов
 
Добрый день Знатокам!
Второй день шарю не могу найти ответ на свой вопрос.
Имеются простые  таблицы из четырех столбцов на разных листах и в разных ecxel книгах. Структура таблицы везде одинаковая! Название файлов и листов разные.
Эти данные при помощи небольшого макроса передаю в  одну таблицу SQL (объединяю данные). Проблема в том, что приходится заходить  в каждый файл, каждый лист и нажимать кнопку- много времени занимает.
Собственно вопрос в том, как в коде обозначить файлы  для экспорта и/или хотя бы только  листы?
Код
Sub Button1_Click()
    Dim cn As ADODB.Connection
    Dim iRowNo As Integer
    Dim sCat, sFr, sPrice As String
    Dim sheet As Worksheet
    Set cn = New ADODB.Connection
     With Sheets("Sheet1") 
      cn.Open "DSN=SQLDB;Trusted_Connection=YES;;APP=Microsoft Office 2010;;DATABASE=Data"
    'Skip the header row
    iRowNo = 2
    'Loop until empty cell in FirstName
    Do Until .Cells(iRowNo, 1) = ""
    sCat = .Cells(iRowNo, 1).Text
    sFr = .Cells(iRowNo, 2).Text
    sPrice = .Cells(iRowNo, 3)
   
    'Generate and execute sql statement to import the excel rows to SQL Server table
    'cn.Execute "Delete From dbo.Fruit"
    cn.Execute "insert into dbo.Fruit (Cat, Fr, Price) values ('" & sCat & "', '" & sFr & "', '" & sPrice & "')"

    iRowNo = iRowNo + 1

    Loop

    MsgBox "Data Successfully Exported."
    cn.Close
    Set cn = Nothing
    End With
End Sub
 
Доброе время суток
Выделите нужные для обработки листы и сделайте цикл по ним
Код
For Each sheet In ActiveWindow.SelectedSheets
    ' ваш код, обрабатывающий данные для текущей sheet
Next
 
@Андрей VG
Спасибо за ответ. Можете поправить меня, если не прав:
Код
Sub Button1_Click()
    Dim cn As ADODB.Connection
    Dim iRowNo As Integer
    Dim sCat, sFr, sPrice As String
    Dim sheet As Worksheet
    Set cn = New ADODB.Connection
      
       'Open a connection to SQL Server
       cn.Open "DSN=DB;Trusted_Connection=YES;;APP=Microsoft Office 2010;;DATABASE=Data"
     For Each sheet In ActiveWindow.SelectedSheets
      With Sheets("Sheet1")
    'Skip the header row
    iRowNo = 2
    'Loop until empty cell in FirstName
    Do Until .Cells(iRowNo, 1) = ""
    sCat = .Cells(iRowNo, 1).Text
    sFr = .Cells(iRowNo, 2).Text
    sPrice = .Cells(iRowNo, 3)
   
    'Generate and execute sql statement to import the excel rows to SQL Server table
 
    cn.Execute "insert into dbo.Fruit (Cat, Fr, Price) values ('" & sCat & "', '" & sFr & "', '" & sPrice & "')"

    iRowNo = iRowNo + 1

    Loop

    MsgBox "Data Successfully Exported."
       Set cn = Nothing
    End With
     With Sheets("Sheet2")
    'Skip the header row
    iRowNo = 2
    'Loop until empty cell in FirstName
    Do Until .Cells(iRowNo, 1) = ""
    sCat = .Cells(iRowNo, 1).Text
    sFr = .Cells(iRowNo, 2).Text
    sPrice = .Cells(iRowNo, 3)
   
    cn.Execute "insert into dbo.Fruit (Cat, Fr, Price) values ('" & sCat & "', '" & sFr & "', '" & sPrice & "')"

    iRowNo = iRowNo + 1

    Loop

    MsgBox "Data Successfully Exported."
       Set cn = Nothing
    End With
Next

    
End Sub
Изменено: belisimo - 17.08.2018 17:30:09
 
belisimo, посмотрите, как выглядит код у Андрея и как у Вас. Ищите такую кнопку <...> и исправьте свои сообщения.
Страницы: 1
Наверх