Attribute VB_Name = "sql_cartella_excel"
'
Option Explicit
'
' vba - Excel
' carica, tramite istruzione Sql
' i dati contenuto in un altro foglio excel.
'
'
Sub CaricaDati()
Dim s As String, stringasql As String, questacartella
questacartella = "<percorso cartella excel>.xls"
'
' stringa sql
s = ""
s = s & ""
s = s & " SELECT <nome campi>,"
s = s & " FROM <nome range excel>"
s = s & " ORDER BY <nome campi>"
stringasql = s
'
Call ExcelSqlCopyrecordset(questacartella, CStr("?nomefoglio?"), stringasql)
'
End Sub
'
Sub ExcelSqlCopyrecordset(questacartella, nomefoglio As String, stringasql As String)
'
Dim ExcelConnessione, ExcelRS, s As String
Dim quanticampi, conta, nomecampo
Set ExcelConnessione = CreateObject("ADODB.Connection")
Set ExcelRS = CreateObject("ADODB.Recordset")
'
ExcelConnessione.Provider = "Microsoft.Jet.OLEDB.4.0"
ExcelConnessione.Properties("Extended Properties").Value = "Excel 8.0"
ExcelConnessione.Open questacartella
'
Set ExcelRS = ExcelConnessione.Execute(stringasql)
'
quanticampi = ExcelRS.Fields.Count - 1 ' conteggio numero campi
'
Sheets(nomefoglio).Activate
'ActiveSheet.Range("A2:Z65500").ClearContents
ActiveSheet.UsedRange.ClearContents ' pulisce tutta area utilizzata nel foglio.
'
' usa i nomi dei campi per intestazione colonne
For conta = 0 To quanticampi
nomecampo = ExcelRS(conta).Name
ActiveSheet.Cells(1, (conta + 1)) = nomecampo
Next conta
'
ActiveSheet.Range("A2").CopyFromRecordset ExcelRS
'
ExcelRS.Close
Set ExcelRS = Nothing
Set ExcelConnessione = Nothing
'
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Cells.Select
Cells.EntireColumn.AutoFit
Range("A2").Select
'
End Sub
Nessun commento:
Posta un commento