Usuário com melhor resposta
Busca de dados em rede

Pergunta
-
Boa tarde pessoal
Estou tentando importar dados da planilha que mostrei no print abaixo. O dados que estou interessado em importar estão entre as colunas 22 a 28 nas linhas de 10 a 33, gostaria de puxar estes dados sem necessitar acessar e abrir a planilha que fica na rede com esse endereço "G:\Prod\Lixiviac\2014\Mês01\Conc01.xlsm". Detalhe os arquivos "Conc" mantem este prefixo e de acordo com os "dias do mês" o número final("01") vária, se fosse possível escolher o arquivo que quero através da macro variando a minha escolha de data da pasta ano até a importação dos dados de acordo com a minha escolha de arquivo.
Muito obrigado a todos.
Respostas
-
Tente adaptar o código abaixo para buscar uma região retangular da pasta de trabalho de origem:
Private Sub ADO_Excel() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strDB As String Dim strSQL As String Dim n As Long 'Instancia-se uma nova Conexão e um novo RecordSet: Set cn = New ADODB.Connection Set rs = New ADODB.Recordset 'Caminho da Pasta de Trabalho: strDB = "C:\Temp\Banco.xlsx" 'Aqui cria-se a cadeia de conexão. cn.ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strDB & ";" & _ "Extended Properties=""Excel 12.0;HDR=No"";""" cn.Open 'Abre a conexão 'Consulta SQL a ser feita. Observe o símbolo de $ feita 'ao fim de cada nome de tabela. strSQL = "SELECT * FROM [tblContatos$B3:C6]" 'Executa consulta Set rs = cn.Execute(strSQL) 'Este método copia todo o RecordSet para a Planilha: Range("A1").CopyFromRecordset rs rs.Close cn.Close End Sub
Em último caso, se precisar buscar células específicas, faça algo como:
For Each vAddress In Array("A1", "D3", "C5", "E8") Range(vAddress) = cn.Execute("SELECT * FROM [tblContatos$" & vAddress & "]").Fields(0) Next vAddress
Essa rotina possui baixo desempenho.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Lucas_Martins_Silva quinta-feira, 14 de agosto de 2014 12:21
Todas as Respostas
-
Olá Lucas,
veja se reponde sua dúvida:
http://www.ambienteoffice.com.br/Excel/obter_dados_de_pastas_de_trabalho_fechadas/ -
-
Tente adaptar o código abaixo para buscar uma região retangular da pasta de trabalho de origem:
Private Sub ADO_Excel() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strDB As String Dim strSQL As String Dim n As Long 'Instancia-se uma nova Conexão e um novo RecordSet: Set cn = New ADODB.Connection Set rs = New ADODB.Recordset 'Caminho da Pasta de Trabalho: strDB = "C:\Temp\Banco.xlsx" 'Aqui cria-se a cadeia de conexão. cn.ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strDB & ";" & _ "Extended Properties=""Excel 12.0;HDR=No"";""" cn.Open 'Abre a conexão 'Consulta SQL a ser feita. Observe o símbolo de $ feita 'ao fim de cada nome de tabela. strSQL = "SELECT * FROM [tblContatos$B3:C6]" 'Executa consulta Set rs = cn.Execute(strSQL) 'Este método copia todo o RecordSet para a Planilha: Range("A1").CopyFromRecordset rs rs.Close cn.Close End Sub
Em último caso, se precisar buscar células específicas, faça algo como:
For Each vAddress In Array("A1", "D3", "C5", "E8") Range(vAddress) = cn.Execute("SELECT * FROM [tblContatos$" & vAddress & "]").Fields(0) Next vAddress
Essa rotina possui baixo desempenho.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Lucas_Martins_Silva quinta-feira, 14 de agosto de 2014 12:21
-