Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#69608
Galera, é o seguinte!
Seguinte: o código abaixo, cria um recordset de uma planilha do Excel:
Sub Busca_eventos()
Dim Db As Database
Dim Ds As Recordset
Set Db = OpenDatabase(ThisWorkbook.Path & "\" & ThisWorkbook.Name, False, False, "Excel 8.0")
Set Ds = Db.OpenRecordset("Select * From [Planilha1$]")
Do Until Ds.EOF
MsgBox Ds![NomedoCampo]
Ds.MoveNext
Loop
End Sub

por exemplo:, na linha abaixo, estou referenciando a uma planilha:
Set Ds = Db.OpenRecordset("Select * From [Planilha1$]")
Porém eu tenho uma tabela que criei dentro desta planilha e nomeei como "Tb_Clientes".
Não sei como me referenciar a esta tabela criando um recordset.
Alguém pode me ajudar?
#69617
Rapaz... eu desconheço SQL para buscar em intervalo de células especificas, fiquei até curioso agora.
Quando a base da planilha está estruturada conforme um Banco de Dados iniciando na A1 até N colunas e N linhas funciona.

Para intervalos específicos eu trabalho com loop nativo do VBA.
#69627
Pois é...deve ter um meio de fazer um sql, buscando pelo nome da própria tabela. Com isso, não precisamos referenciar intervalos.
Se existe uma forma de transformar uma planilha em um Recordset, deve existir a forma de dar um sql em uma das tabelas no excel. Só resta saber, como se referenciar à uma tabela.
#69643
Resolvido! :)
Segue o código completo para quem se interessar:

Primeiro crie a função, conforme abaixo:
Function Captura_Range_Tabela(tbl As ListObject) As String
Captura_Range_Tabela = "[" & tbl.Parent.Name & "$" & tbl.Range.Address(False, False) & "] AS [" & tbl.Name & "]"
End Function

Agora a função que gera um recordset

Sub CriaRecordset ()
Dim Db As Database
Dim Ds As Recordset
Set Db = OpenDatabase(ThisWorkbook.Path & "\" & ThisWorkbook.Name, False, False, "Excel 8.0")
Set Ds = Db.OpenRecordset("SELECT * FROM " & Captura_Range_Tabela(ActiveSheet.ListObjects("Tabela1")))


Do Until Ds.EOF
MsgBox Ds!Nome
Ds.MoveNext
Loop
End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord