Saudações aos meus 3 leitores, como diria o Zé na coluna Fala Zé do Cerreio Braziliense. :)
Estive há um bom tempo pesquisando em como popular uma combobox no Excel apartir dos dados vindos de um banco de dados SQL Server 2005 e, para complicar ainda mais, localizado em uma instancia em particular.
A princípio a gente pensa que por se tratar um banco mais robusto conectar nele seja igualmente mais complexo do que num Access da vida, arquivo de texto ou até mesmo outra planilha. Então tranqüilizo a todos os 3 ai que é absurdamente simples, depois que se decobre é sempre mais simples do que pensava. :)
Um exemplo vale mais que mil palavras... Primeiro em Access depois no SQL Server:

Sub carregarDadosAcces()
Sheets("Dados Pessoais").Select
Range("A192:E1500").Select
Selection.Clear
Range("A192").Select
StringConec = "ODBC;DSN=Banco de dados do MS Access;DBQ=C:/MeuBanco.mdb;DefaultDir=Worksheets("Dados Pessoais").Range("B6");DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
SQLConec = "SELECT * FROM TB_USUARIOS"
With ActiveSheet.QueryTables.Add(Connection:=StringConec, Destination:=Range("A192"))
.CommandText = Array(SQLConec)
.Name = "Consulta Access"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
Sheets(1).Activate
Worksheets("Dados Pessoais").Range("C3").Activate
End Sub

Sub carregarDadosSQLServer()
Sheets("Dados Pessoais").Select
Range("A192:E1500").Select
Selection.Clear
Range("A192").Select
StringConec = "ODBC;Driver={SQL Native Client};Server=MeuServidor\MinhaInstacia;UID=meuUsuario;PWD=minhaSenha;APP=;WSID=;DATABASE=MeuBanco""
SQLConec = "SELECT * FROM TB_USUARIO ORDER BY NO_USUARIO"
With ActiveSheet.QueryTables.Add(Connection:=StringConec, Destination:=Range("A192"))
.CommandText = Array(SQLConec)
.Name = "Consulta Access"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
Sheets(1).Activate
Worksheets("Dados Pessoais").Range("C3").Activate
End Sub
Qualquer dúvida postem nos coments que terei o maior prazer em ajudar.
Nenhum comentário:
Postar um comentário