Самый простой способ получить то, чего вы, как мне кажется, вы просите, - это изменить свой оператор SQL, изменив
strSql = "SELECT [Neptune Number],[Description],[Manufacturer],[Manufacturer P/N] FROM [All Components];"
на
strSql = "SELECT [Neptune Number],[Description],[Manufacturer],[Manufacturer P/N] FROM [All Components] WHERE [Neptune Number] = 'Specific Value' ;"
Это заставит запрос sqlверните только те записи, которые вам нужны..find
метод может быть использован для фильтрации набора записей, но я избегал использовать его в этом случае, так как было бы проще просто запросить в БД только ту информацию, которую вы хотите.
для обработки набора записей, который выможно использовать следующее
with rs
'will skip further processing if no records returned
if not (.bof and .eof) then
'assuming you do not need the headers
'loop through the recordset
do while not .eof
for i = 0 to .fields.count -1
'assuming the active sheet is where you want the data
cells(row, i + colOffset) = .fields(i).value
next
Rows(Row & ":" & Row).Insert
.movenext
loop
end if
end with
Где строка - это начальная точка ваших данных, а colOffset - начальный столбец ваших данных.Обратите внимание, что этот код не работает в точном порядке, который вы указали в своем вопросе (я вставляю строки по мере необходимости, а не вычисляю количество записей заранее).
Я избегал использования .recordcount
, потому что яФункция find в зависимости от используемой базы данных не вернет правильное количество записей.