VBA ADODB excel - чтение данных из набора записей - PullRequest
5 голосов
/ 18 октября 2010

Надеюсь, вы мне поможете, я хотел бы прочитать данные из файла Excel, и я делал то, что делал, создавая приложение Excel в backgroud, но затем меня попросили про макросы VBA - отключите или включите его.

У меня есть 100 файлов Excel, из которых мне нужно собрать данные, поэтому, если мне будет предложено запрашивать каждый файл, я получу действительно неэффективный подход.Хотя я новичок в мире Excel VBA и начинаю сомневаться, есть ли другой способ .....

У меня вопрос, могу ли я открыть их другим способом?

Я нахожу что-то ADODBЯ чувствую, что это может помочь мне.Так что у меня есть код, как показано ниже.Прежде всего я хотел бы прочитать данные из нескольких ячеек.Я понятия не имею, как я могу прочитать данные.Я пытаюсь читать, как вы можете видеть ниже, но это выдает ошибку.Opennig соединение идет хорошо, выполнение запросов также.Но тогда я просто догадываюсь, как читать данные.

Я использую редактор VBA.

Sub hello_jet()
Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=D:\test.xls" & _
"Extended Properties=Excel 8.0;"
.Open
End With
strQuery = "SELECT * FROM [Sheet1$E36:E38]"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  Set strNaam = rs.Fields(0).Value
Loop
rs.Close
End Sub

Я работаю в Office 2003. Еще больше я узнаю, что версия ExClell должна быть 11. Это не работает

1 Ответ

16 голосов
/ 18 октября 2010

Я удивлен, что строка подключения работает для вас, потому что отсутствует точка с запятой. Set используется только с объектами, поэтому вы бы не сказали Set strNaam.

Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=D:\test.xls " & _
  ";Extended Properties=""Excel 8.0;HDR=Yes;"""
.Open
End With
strQuery = "SELECT * FROM [Sheet1$E36:E38]"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  For i = 0 To rs.Fields.Count - 1
    Debug.Print rs.Fields(i).Name, rs.Fields(i).Value
    strNaam = rs.Fields(0).Value
  Next
  rs.MoveNext
Loop
rs.Close

Есть и другие способы, в зависимости от того, что вы хотите сделать, например, GetString ( Описание метода GetString ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...