martedì 16 luglio 2013

sql cartella excel

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