Olá!
Estou com uma dúvida na utilização do método find no Excel.
Estou tentando ler uma tabela do Access de dentro do Excel (versão 2010)
A seguinte linha está dando erro:
Porém se eu colocar apenas 1 critério não há erro:
Abaixo o código completo:
O erro que dá é o seguinte:
Erro em tempo de execução '3001':
Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.
Estou com uma dúvida na utilização do método find no Excel.
Estou tentando ler uma tabela do Access de dentro do Excel (versão 2010)
A seguinte linha está dando erro:
- Código:
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 1"
Porém se eu colocar apenas 1 critério não há erro:
- Código:
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "'"
rs_Cronograma.Find "NumEtapa_Cronograma = 1"
Abaixo o código completo:
- Código:
Sub Importa_Dados()
Dim vSQL_Clientes As String, vSQL_Cronograma As String, vSQL_IDs As String
Dim rs_Clientes As ADODB.Recordset, cn_Clientes As ADODB.Connection
Dim rs_Cronograma As ADODB.Recordset, cn_Cronograma As ADODB.Connection
Dim rs_IDs As ADODB.Recordset, cn_IDs As ADODB.Connection
Dim vLinha As Integer, vLinhaMax As Integer
Dim vID As String
'Abre a tabela cronograma e lança na planilha
vSQL_Cronograma = "SELECT tb_Cronograma.ID_Cronograma, tb_Cronograma.Etapa_Cronograma, tb_Cronograma.NumEtapa_Cronograma, tb_Cronograma.Previsto_Cronograma, tb_Cronograma.Executado_Cronograma "
vSQL_Cronograma = vSQL_Cronograma & "FROM tb_Cronograma;"
Set cn_Cronograma = New ADODB.Connection
cn_Cronograma.CursorLocation = adUseClient
cn_Cronograma.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Z:\Publico\Gestão Ideés\IdeesGestao_be.accdb;Persist Security Info=False"
Set rs_Cronograma = New ADODB.Recordset
rs_Cronograma.Open vSQL_Cronograma, cn_Cronograma
For vLinha = 2 To vLinhaMax
vID = Worksheets("Cadastro das Turmas").Cells(vLinha, 2).Value
rs_Cronograma.MoveFirst
'>> NA LINHA ABAIXO QUE DÁ O ERRO <<
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 1"
Worksheets("Cadastro das Turmas").Cells(vLinha, 11).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 13).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 2"
Worksheets("Cadastro das Turmas").Cells(vLinha, 40).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 21).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 3"
Worksheets("Cadastro das Turmas").Cells(vLinha, 41).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 22).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 4"
Worksheets("Cadastro das Turmas").Cells(vLinha, 42).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 23).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 5"
Worksheets("Cadastro das Turmas").Cells(vLinha, 43).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 24).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 6"
Worksheets("Cadastro das Turmas").Cells(vLinha, 44).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 25).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 7"
Worksheets("Cadastro das Turmas").Cells(vLinha, 45).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 26).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 8"
Worksheets("Cadastro das Turmas").Cells(vLinha, 46).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 28).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 9"
Worksheets("Cadastro das Turmas").Cells(vLinha, 47).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 29).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 10"
Worksheets("Cadastro das Turmas").Cells(vLinha, 48).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 31).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 11"
Worksheets("Cadastro das Turmas").Cells(vLinha, 49).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 32).Value = rs_Cronograma!Executado_Cronograma
rs_Cronograma.MoveFirst
rs_Cronograma.Find "ID_Cronograma LIKE '" & vID & "' AND NumEtapa_Cronograma = 12"
Worksheets("Cadastro das Turmas").Cells(vLinha, 8).Value = rs_Cronograma!Previsto_Cronograma
Worksheets("Cadastro das Turmas").Cells(vLinha, 35).Value = rs_Cronograma!Executado_Cronograma
Next
'Fecha as tabelas
rs_IDs.Close
Set rs_IDs = Nothing
cn_IDs.Close
Set cn_IDs = Nothing
rs_Clientes.Close
Set rs_Clientes = Nothing
cn_Clientes.Close
Set cn_Clientes = Nothing
rs_Cronograma.Close
Set rs_Cronograma = Nothing
cn_Cronograma.Close
Set cn_Cronograma = Nothing
End Sub
O erro que dá é o seguinte:
Erro em tempo de execução '3001':
Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.
Última edição por thiagomcosta em 14/6/2017, 14:07, editado 1 vez(es)