Untuk yang nomor 1 :
CopyFromRecordset tidak memiliki fitur atau properties untuk mempaste headers. Jadi proses penulisan headers di tabel hasil harus dilakukan sendiri.
Jika query-nya selalu Select * from satuTabelSaja dan selalu berurutan header-nya seperti tabel sumber data, maka copy saja header dari tabel sumber data ke tabel hasil.
Jika kolom-kolom ditentukan urutannya atau tidak semua kolom atau ada yang diubah menjadi nama yang berbeda dibanding tabel sumber data, maka perlu loop daftar fields di dalam recordset, dan tulis ke lokasi header di tabel hasil.
dim iField as long
for iField=0 to mrs.Fields.Count-1 'misal nama variabel recordset-nya adalah mrs
lokasiPenulisanCellsKe-iField = mrs.fields(iField).name
next iField
'bisa diletakkan tepat sebelum atau tepat sesudah baris CopyFromRecordset
Untuk yang nomor 2 :
Jika maksudnya adalah like '%HVS%' menghasilkan jumlah baris yang berbeda dengan like '%hvs%' artinya driver (yaitu ODBC) memprosesnya dengan case sensitive.
Hal ini bisa disesuaikan dibagian Where dengan mengubah jadi huruf kecil semua datanya dan kriterianya
Where LCase(nama_barang) like '%hvs%'
atau dengan meng-capital-kan semuanya :
Where UCase(nama_barang) like '%HVS%'