Pessoal para iniciar com a planilha base zerada, precisa fazer um ajuste no código que captura o maior valor, colocando um if, segue exemplo: If rs!Maior "Nulo" Then NovoID = rs!Maior + 1 Else NovoID = 1 End If
Quando a planilha está zerada e inserido o número "1" na célula no formato de texto ( '1 )... Quando chega no registro 10 o NovoID = rs!Maior + 1 não retorna o próximo número que seria o 11... O rs!Maior só retorna até o 9... Como faço para contornar esse erro?
Boa noite, primeiro registro precisa ser convertido para número manualmente na planilha base, depois vai ser reconhecido corretamente. Sobre o ID 10 testei e funcionou normal, mas precisa definir os primeiros número que de fato são números.
@@CanalSGP Muito obrigado... Consegui de 2 forma... 1° Forma: do jeito que vc falou... Definindo manualmente. 2° Forma: coloquei uma condição "IF" onde ela só executará quando o NovoID for igual a 1... Ficando assim... rs.AddNew If NovoID = 1 Then Sheets("Planilha1").Range("A2").Value = 1 Else rs!ID = NovoID Endo If Dessa forma sempre que a planilha estiver zerada será adicionado o valor na célula como um número, após isso os outros são reconhecidos como número normalmente. Obrigado pela atenção! Aprendo muito com seus vídeos! Parabéns 👏👏
Salvasse minha vida com essa nova série de videos, era isso que eu estava precisando, valeu de novo meu caro! Isso me deu mais hype em voltar a programar hehehe Só falta saber como puxar dados do combobox com a planilha fechada!
Boa tarde, que bom, mas seria interessante ir estudando também como fazer com o banco de dados Access, para ir se preparando para quando o volume de dados não ser mais suportado. Como carregar uma combobox vai ser a próxima aula, que será postada na data de hoje.
Bom dia, se tiver outro identificador único para cada linha, pode remover o código que pega o maior valor ATRAVÉS DO SQL e gera novo id, que seria pela variável novoID.
Excelente aula. Estou tendo dificuldade apenas com pastas compartilhadas no OneDrive. Será que a string de conexão é diferente? Se alguém puder me ajudar com esse problema ficaria muito agradecido :)
@@CanalSGP Ah entendi, eu precisava fazer essa mesma aplicação, salvar algumas informações em outra planilha e outras informações na mesma planilha, porém iria ser mais de 1 usuario então pensei fazer no OneDrive. mas se não tem como vou pensar em outra maneira. Tem alguma sugestão ?
Excelente aula. Fiz um teste aqui e rodou perfeito por um tempo. No entanto, não sei se por um problema do Excel, os dados criados na planilha base são perdidos quando fecho a planilha principal
@@CanalSGP Fiz testes e identifiquei a possível causa do erro. A planilha salva os dados corretamente no arquivo local, mas quando abro a planilha do banco de dados, o OneDrive atualiza com a versão do servidor, que não possui a alteração. Existe alguma rotina para sincronizar a planilha com o OneDrive logo após ser feita a alteração?
Estou estudando esta planilha gostaria de saber o que mudar pra salvar por coluna e N pelo cabeçalho por exemplo no lugar do "rs! Nome do cabeçalho" coloca a coluna
muito bom obrigada! porém tenho algumas duvidas em um formulário que acessa outra planilha fechada, como posso evitar o registro de dados já existentes? como posso criar dois formulários iguais que podem ser preenchidos simultaneamente em arquivos de vba distintos e editam uma mesma base de dados?
Olá! Tudo bem? Quando eu armazeno os dados em outra planilha rs.AddNew lá na outra planilha, mesmo configurada a célula como número, insere um apóstrofo antes do número, tipo '2 '4 '6. Por que será?
Boa noite, na planilha base teste colocar a primeira linha de dados manualmente e definir o formato de cada coluna. Pode ser que desta forma o registros sejam inseridos no formato numérico.
É impressionante como o conteúdo desse canal é excelente e muito útil, não importa a data. Mas tenho uma pergunta professor: Tem como fazer isso colocando a base de dados em outra pasta? Queria deixar a base de dado no OneDrive e a planilha do formulário fora.
Eu tenho uma planilha que gera certificados em PDF. Consigo nessa mesma planilha fazer com que salve os dados do certificado em outra planilha além de salvar o pdf?
Professor, não tem a possibilidade de atualizar a planilha base sem precisar fazer um formulário, ou seja, apenas atualizando a planilha e já fica atualizando a planilha base.? Pois uso varias planilhas com colunas diferentes para cada tipo de doenças. gostaria de fazer com que cada enfermeiro atualizar seus dados e ficasse em uma planilha base. Já fiz o processo do login individual para cada um, com suas aulas. agora quer que cada um atualize simultaneamente suas planilhas(abas ) e fique salvo em uma planilha base. (O senhor não tem algum contato?!!) Obrigado.
Boa tarde, o problema de tentar fazer diretamente na planilha é que a cada célula alterada vai precisar acionar uma macro, o que vai deixar o processo lento, porque vai ficar abrindo e fechando a conexão a todo momento. Mas se já tem os dados salvos em uma planilha ou mais de uma, pode conectar com elas para fazer consulta, igual no vídeo do link a seguir. ua-cam.com/video/gMHZZRwEn3k/v-deo.html
Boa tarde! A minha conexão está dando erro. Ao debugar o código, vejo que a string de concexão (strConexao) está correta, mas ao passar pela linha "Conexao.Open strConexao" o codigo vai direto para o tratamento de erro. O que será q pode estar acontecendo?
Excelente aula... funciona muito bem...mas se a planilha estiver compartilhada não registra os dados... também não da erro ...as vezes se fechar a outra planilha e reabrir os dados aparecem e as vezes se perdem... É possível resolver este problema?
Bom dia, obrigado, acredito que a planilha base não deve ser compartilhada, mas colocada em uma pasta onde ambos tenham acesso. E a planilha vba deve ser uma cópia em cada máquina por exemplo, não utilizar a mesma.
Sim... desta forma transforma a planilha receptora em uma base de dados, não precisa ser aberta para receber ou coletar dados... assim podemos utilizar o próprio vba para capturar os dados ou o Power query .. correto?
Obrigado pela aula professor, só tem uma dúvida minha planilha base está zerada, e dá erro no Maior ele fica com o valor Nulo e não soma mais 1 , como poderia resolver?
Boa noite, não me atentei a este detalhe, pode colocar um if depois de verificar o maior valor, vai ficar da seguinte forma. If rs!Maior "Nulo" Then NovoID = rs!Maior + 1 Else NovoID = 1 End If
Ótima aula! Professor, tem algum vídeo no canal ensinando como salvar dados em uma outra planilha, porém no mesmo arquivo? Por exemplo, preciso criar um tela principal onde acesso todos os formulários sem precisar ir na planilha onde vai ser salvo as informações.
@@CanalSGP vou tentar isso. Mas em que momento coloco esse comando? Pois ao clicar para abrir o formulário muda automaticamente para a aba onde salva os dados.
@@CanalSGP Professor, estou com outra situação aqui. Se puder me ajudar eu lhe agradeço. Fiz um regra para um textobox. Se a data da textbox X for >= textbox Y, Então a textbox Z vai ser igual a "No prazo". Do contrário vai ser igual a "Atrasada". A regra funciona, porém percebi que está considerando apenas o dia, por exemplo, se o dia for maior que o o dia atual funciona corretamente, porém se o dia for menor que o dia atual e o mês for maior ja não funciona. Como faço para que considere a data por completo e não somente o dia?
Boa noite. Na sub ConectarPlan a linha Conexão.Open StrConexao apresenta erro. Nome da fonte de dados não encontrado e nenhum driver padrão especificado. Consegue me ajudar ?
Muito BOM sua explicação , porem fiquei com umas duvidas? Tem como Amostra esse dados em um ListView sem aprir a planilha? Como é o comando SQL para pegar a ultima linha preenchida ao invez de pegar por ID?
@@CanalSGP fiquei hoje a manhã toda tentando e nada, mais tarde vou tentar novamente. Vai ser muito útil caso conseguir. E mais uma vez Parabéns por compartilhar seus conhecimentos
Bom dia, o vídeo no link a seguir foi feito com relação ao Access, mas a parte de carregar os dados do recordset para a o listview é igual, segue link. ua-cam.com/video/5vN60X07XSw/v-deo.html
Boa tarde, ótimo trabalho. É possível durante a inserção de dados haver uma validação se já existe a informação na planilha de destino e aí sim ele acrescentar ou perguntar se deseja alterar a informação? Outra pergunta... Consigo no formulário de envio ter um controle (status) que atualize com o valor do total (qtd) que eu tenho na planilha da base de dados sem ter que abri-la para confirmar? Outra pergunta: se na planilha de base de dados houver senha, não terei problemas para criar a conexão? Última pergunta: Ao invés de deixar o endereço e nome da planilha da base de dados padrão. Professor O Sr. acha que facilitaria a interação do usuário com uma msgbox se ele deseja escolher a planilha da base para inserir os dados e caso positivo usar o GetOpenFileName para deixar dinâmico esse processo?
Boa noite, para verificar se o registro já existe é o mesmo procedimento da pesquisa. Pode utilizar o SQL para somar também ou para exibição dos dados pode criar uma consulta na planilha base, ficando como se fosse um espelho na planilha que usuário está utilizando. Planilha base não pode ter senha neste procedimento, mas vou estudar se tem alguma forma de salvar em planilha com senha. ua-cam.com/video/6iyMSKyWEdE/v-deo.html
Tem como fazer isso de uma planilha em vez de um formulário ? Porque tenho um fluxo de Caixa e quando tento salvar num bd fechado não vai não reconhece as colunas e em a células nomeadas! Tem com me ajudar ?
Eu fiz o exemplo exatamente como está descrito no video mas está dando erro 3709 ("Run-time error '3709' The connection cannot be used to perform this operation. It is either closed or invalid in this context.") Como posso resolver? Ele vai para linha de código: rs.Open "SELECT MAX(ID)AS Maior FROM [Dados$];", Conexao, adOpenKeyset, adLockPessimistic - Você consegue me ajudar?
Bom dia, solicite a planilha de exemplo no e-mail do site do canal, link na descrição do vídeo. Pode ser que sua versão Excel seja outra string de conexão.
Sr Luan boa tarde. Seria melhor trazer todos os dados da planilha BD.xlsx. Manuseá-lo na planilha principal (Alterar, Pesquisar e criar um novo) e depois devolve-los para a planilha BD? Assim Abriríamos a planilha poucas vezes. Seria possível ou melhor?
Boa tarde, acredito que não, porque desta forma ambas ficariam pesadas e como está sendo salvo sem abrir a planilha base, a planilha com o formulário fica mais leve. Mas pode conectar ambas as planilhas utilizando a opção de consulta da aba dados da planilha.
@@CanalSGP É exatamente isso que eu quero fazer, meu controle de estoque tá muito pesado e preciso replicar o formulário em planilha vazia para ser mais rápido o processo
Рік тому
Oii, aqui está retornando erro na linha do RS.open select max
Sei que tenho muito a aprender, porém não consigo obter êxito em nenhum código ensinado. Faço todo o passo a passo, mas no final, é estresse puro. Fiz tudo como foi ensinado e no final foi apontado o erro que o comando não pode ser concluído, pelo fato do BDados não estar aberto. Como assim, se criei a macro ConectarPlan e a inseri antes de solicitar o rs para a formulação do ID automático?
Bom dia, entre em contato e solicite a planilha de exemplo, na descrição do vídeo tem o link do site do canal. Por aqui não conseguimos enviar porque o UA-cam não está permitindo informar e-mail nos comentários.
Esse processo pode ser aplicado caso 2 ou mais forms tivessem seus dados salvos no mesmo banco de dados? Exemplo: Fulano A- Forms 1 Fulano B- Forms 2 Fulano C- Forms 3 Os três preenchem ao mesmo tempo e salvam no mesmo Banco de Dados. É aplicável? Funciona?
Boa tarde, este procedimento funciona apenas para versões Excel mais antigas. Para versões Excel mais modernas talvez seja o caso de utilizar o banco de dados Access.
Sabe dizer como fazer para fechar um form de aviso de outra planilha com vba? Ele aparece automaticamente quando a planilha que eu vou coletar os dados é aberta.
@@CanalSGP Acho que não dá para desviar a abertura do form pq ele for programado para disparar quando abre a planilha. Se tiver como, eu não conheço a técnica.
estou com um problema professor, a minha tabela de dados da planilha base tem colunas com fórmulas , mas quando salvo com a planilha fechada ela não acrescenta as colunas com fórmulas na tabela, mas quando ela está aberta ela acrescenta
Bom dia, talvez seja preciso fazer essas operações das fórmulas antes de enviar os dados, se envolver operação das informações na mesma linha que está sendo salva.
Boa tarde! Estou com um problema de código na parte de Sub ConectarPlan, ao verificar se o código está funcionando corretamente com o F8 ele passa sem dar erro até chegar no Exit Sub apresentando a seguinte mensagem: “Erro em tempo de execução ‘-2147467259 (80004005)’: Não foi possível encontrar ISAM instalável. Você poderia me ajudar a solucionar esse problema? Se sim eu agradeceria imensamente.
'Digitei a formula conforme o video, porem apresenta esse erro agora "Erro em tempo de execução '-2147467259 (80004005) [Microsof][ODEC Driver Manager] Nome da fonte de dados não Encontrado e nenhum driver padrão especificado" Public Conexao As ADODB.Connection Public rs As ADODB.Recordset Sub ConectarPlan() 'On Error GoTo Erro Dim strConexao As String Dim Provider As String, Ex As String, EnderecoPlan As String Provider = "Provider-=Microsoft.ACE.OLEDB.12.0;Data Sources:" EnderecoPlan = ThisWorkbook.Path & "\Base de dados.xlsx;" Ex = "Extended Properties=""Excel 12.0 xml;HDR=YES"";" Set Conexao = New ADODB.Connection strConexao = Provider & EnderecoPlan & Ex Conexao.Open strConexao Exit Sub Erro: MsgBox "Erro!", vbCritical, "CONECTAR" End Sub
Bom dia, pelo que observei digitação errada na linha de código do Provider: Provider = "Provider-=Microsoft.ACE.OLEDB.12.0;Data Sources:" ERRADO Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" CORRETO
Não estou conseguindo saber como resolver este erro? Erro em tempo de execução '-2147467259 (80004005) Não foi possível encontrar ISAM instalável, ele depura na linha Conexao.Open strConexao Public Conexao As ADODB.Connection Public rs As ADODB.Recordset Sub ConectarPlan() 'on error Goto Erro Dim strConexao As String Dim provider As String, Ex As String, Enderecoplan As String provider = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=" Enderecoplan = ThisWorkbook.Path & "\Base de dados.xlsx;" 'Enderecoplan = ThisWorkbook.Path & "\BASE DE DADOS" & "\DADOS_AMBIENTES.xlsx;" Ex = "Extended Properties=""Excel 12.0 xlm;hdr=yes"";" Set Conexao = New ADODB.Connection strConexao = provider & Enderecoplan & Ex Conexao.Open strConexao Exit Sub Erro: MsgBox "Erro!", vbCritical, "ConectarPlan" End Sub Sub DesconectarPlan() If Not Conexao Is Nothing Then Conexao.Close Set Conexao = Nothing End If End Sub
Bom dia, confirme se a digitação do código está correta na linha a seguir. No exemplo: Ex = "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" No seu código: l e m trocado de lugar: Ex = "Extended Properties=""Excel 12.0 xlm;hdr=yes"";"
Pessoal para iniciar com a planilha base zerada, precisa fazer um ajuste no código que captura o maior valor, colocando um if, segue exemplo:
If rs!Maior "Nulo" Then
NovoID = rs!Maior + 1
Else
NovoID = 1
End If
Quando a planilha está zerada e inserido o número "1" na célula no formato de texto ( '1 )... Quando chega no registro 10 o NovoID = rs!Maior + 1 não retorna o próximo número que seria o 11... O rs!Maior só retorna até o 9... Como faço para contornar esse erro?
Boa noite, primeiro registro precisa ser convertido para número manualmente na planilha base, depois vai ser reconhecido corretamente. Sobre o ID 10 testei e funcionou normal, mas precisa definir os primeiros número que de fato são números.
@@CanalSGP Muito obrigado... Consegui de 2 forma...
1° Forma: do jeito que vc falou... Definindo manualmente.
2° Forma: coloquei uma condição "IF" onde ela só executará quando o NovoID for igual a 1... Ficando assim...
rs.AddNew
If NovoID = 1 Then
Sheets("Planilha1").Range("A2").Value = 1
Else
rs!ID = NovoID
Endo If
Dessa forma sempre que a planilha estiver zerada será adicionado o valor na célula como um número, após isso os outros são reconhecidos como número normalmente.
Obrigado pela atenção!
Aprendo muito com seus vídeos! Parabéns 👏👏
Que bom que conseguiu.
E como eu faço para buscar os dados da planilha dados para os setores que precisam acessar? pq não pode acessar mais de uma pessoa ao mesmo tempo.
Esse é o melhor e mais útil canal de Excel VBA que já vi no UA-cam. Parabéns pelo Trabalho
Obrigado pelo elogio
Muito bom. Parabéns. Sua didática é muito boa.
Poderia reunir o salvar, pesquisar, filtrar e um alterar em um único projeto.
Boa tarde, vídeo aulas estão sendo postadas no canal, por enquanto salvar e pesquisar.
Salvasse minha vida com essa nova série de videos, era isso que eu estava precisando, valeu de novo meu caro! Isso me deu mais hype em voltar a programar hehehe
Só falta saber como puxar dados do combobox com a planilha fechada!
Boa tarde, que bom, mas seria interessante ir estudando também como fazer com o banco de dados Access, para ir se preparando para quando o volume de dados não ser mais suportado. Como carregar uma combobox vai ser a próxima aula, que será postada na data de hoje.
Parabéns pelo conteúdo, tudo muito bem explicado, só faltou o arquivo para confirmar os comandos, estou aqui lutando com o meu.
Bom dia, pode solicitar o arquivo de exemplo no e-mail do site do canal, link na descrição do vídeo.
Tem algum vídeo que explica sobre o código vba, application.calculation ?
Boa tarde, não tenho, mas geralmente para desativar os cálculos é utilizado application.calculate
Muito bom o conteúdo!
Obrigado pelo elogio
Quando não for usar o ID, o que mudaria o código? Comprei o combo das planilhas, é um super conteúdo.
Bom dia, se tiver outro identificador único para cada linha, pode remover o código que pega o maior valor ATRAVÉS DO SQL e gera novo id, que seria pela variável novoID.
Parabéns! Excelente.
Obrigado
Excelente aula. Estou tendo dificuldade apenas com pastas compartilhadas no OneDrive. Será que a string de conexão é diferente?
Se alguém puder me ajudar com esse problema ficaria muito agradecido :)
Bom dia, obrigado, no OneDrive acredito que não dá certo, pelo menos até o momento todos os procedimento que envolve pastas no OneDrive não funciona.
@@CanalSGP Ah entendi, eu precisava fazer essa mesma aplicação, salvar algumas informações em outra planilha e outras informações na mesma planilha, porém iria ser mais de 1 usuario então pensei fazer no OneDrive. mas se não tem como vou pensar em outra maneira. Tem alguma sugestão ?
Boa tarde, acredito que somente em pasta na rede ou talvez com dropbox, mas não tentei fazer ainda.
Excelente aula. Fiz um teste aqui e rodou perfeito por um tempo. No entanto, não sei se por um problema do Excel, os dados criados na planilha base são perdidos quando fecho a planilha principal
Bom dia, obrigado, teste em outra máquina para ter certeza se o problema é nas planilhas mesmo.
@@CanalSGP Fiz testes e identifiquei a possível causa do erro. A planilha salva os dados corretamente no arquivo local, mas quando abro a planilha do banco de dados, o OneDrive atualiza com a versão do servidor, que não possui a alteração. Existe alguma rotina para sincronizar a planilha com o OneDrive logo após ser feita a alteração?
Estou estudando esta planilha gostaria de saber o que mudar pra salvar por coluna e N pelo cabeçalho por exemplo no lugar do "rs! Nome do cabeçalho" coloca a coluna
Bom dia, acredito que seja mais fácil estruturar os dados de outra forma, no código não sei se é possível.
muito bom obrigada! porém tenho algumas duvidas
em um formulário que acessa outra planilha fechada, como posso evitar o registro de dados já existentes?
como posso criar dois formulários iguais que podem ser preenchidos simultaneamente em arquivos de vba distintos e editam uma mesma base de dados?
Boa tarde, se for para utilização por multi usuários talvez seja o caso de utilizar o Access como banco de dados.
Olá! Tudo bem? Quando eu armazeno os dados em outra planilha rs.AddNew lá na outra planilha, mesmo configurada a célula como número, insere um apóstrofo antes do número, tipo '2 '4 '6. Por que será?
Boa noite, na planilha base teste colocar a primeira linha de dados manualmente e definir o formato de cada coluna. Pode ser que desta forma o registros sejam inseridos no formato numérico.
@@CanalSGP Obrigado! Deu certo! Pelo visto ele copia a formatação da linha anterior (acima).
Que bom que deu certo.
Desde já obrigado. mas tenho uma duvida, é possível fazer esse procedimento sem a coluna ID e gravar os dados de cima para baixo?
Boa noite, id é a base de funcionamento da programação, sempre é bom colocar em todas as bases de dados.
É impressionante como o conteúdo desse canal é excelente e muito útil, não importa a data. Mas tenho uma pergunta professor: Tem como fazer isso colocando a base de dados em outra pasta? Queria deixar a base de dado no OneDrive e a planilha do formulário fora.
Boa tarde, acredito que no oneDrive não funciona, porque o arquivo não existe fisicamente no computador, porque está em nuvem.
@@CanalSGP Entendi. Mas eu consigo deixar a Base de Dados em outra pasta na maquina?
Boa tarde, pode definir o endereço url manualmente.
É possível conectar com uma planilha Excel no onedrive, onedrive business ou SharePoint documents, com ado?
Boa noite, até o momento não tenho conhecimento de algo neste sentido.
Ok. Muito obrigado pelo retorno.
Ótimo vídeo parabéns, mas eu não consigo rodar a macro. Dá um erro na variável Data
Como posso corrigir isso?
Bom dia, qual mensagem de erro retorna?
Eu tenho uma planilha que gera certificados em PDF. Consigo nessa mesma planilha fazer com que salve os dados do certificado em outra planilha além de salvar o pdf?
Bom dia, que eu saiba não tem como manipular registros de pdf via vba.
Professor, não tem a possibilidade de atualizar a planilha base sem precisar fazer um formulário, ou seja, apenas atualizando a planilha e já fica atualizando a planilha base.? Pois uso varias planilhas com colunas diferentes para cada tipo de doenças. gostaria de fazer com que cada enfermeiro atualizar seus dados e ficasse em uma planilha base. Já fiz o processo do login individual para cada um, com suas aulas. agora quer que cada um atualize simultaneamente suas planilhas(abas ) e fique salvo em uma planilha base. (O senhor não tem algum contato?!!)
Obrigado.
Boa tarde, o problema de tentar fazer diretamente na planilha é que a cada célula alterada vai precisar acionar uma macro, o que vai deixar o processo lento, porque vai ficar abrindo e fechando a conexão a todo momento. Mas se já tem os dados salvos em uma planilha ou mais de uma, pode conectar com elas para fazer consulta, igual no vídeo do link a seguir. ua-cam.com/video/gMHZZRwEn3k/v-deo.html
Boa tarde!
A minha conexão está dando erro. Ao debugar o código, vejo que a string de concexão (strConexao) está correta, mas ao passar pela linha "Conexao.Open strConexao" o codigo vai direto para o tratamento de erro. O que será q pode estar acontecendo?
Boa tarde, talvez o endereço da planilha esteja errado ou não é da extensão xlsx que foi utilizado a string de conexão.
Excelente aula... funciona muito bem...mas se a planilha estiver compartilhada não registra os dados... também não da erro ...as vezes se fechar a outra planilha e reabrir os dados aparecem e as vezes se perdem... É possível resolver este problema?
Bom dia, obrigado, acredito que a planilha base não deve ser compartilhada, mas colocada em uma pasta onde ambos tenham acesso. E a planilha vba deve ser uma cópia em cada máquina por exemplo, não utilizar a mesma.
Sim... desta forma transforma a planilha receptora em uma base de dados, não precisa ser aberta para receber ou coletar dados... assim podemos utilizar o próprio vba para capturar os dados ou o Power query .. correto?
Boa tarde, sim, pode buscar os dados da base para outras planilhas.
Olá, no meu está dando erro "Declaracao duplicada no escopo atual", ja verifique se foi declarada mais de uma vez mas não está.
Boa noite, solicite a planilha de exemplo nos contatos do site do canal, link na descrição do vídeo.
Obrigado pela aula professor, só tem uma dúvida minha planilha base está zerada, e dá erro no Maior ele fica com o valor Nulo e não soma mais 1 , como poderia resolver?
Boa noite, não me atentei a este detalhe, pode colocar um if depois de verificar o maior valor, vai ficar da seguinte forma.
If rs!Maior "Nulo" Then
NovoID = rs!Maior + 1
Else
NovoID = 1
End If
Ótima aula! Professor, tem algum vídeo no canal ensinando como salvar dados em uma outra planilha, porém no mesmo arquivo? Por exemplo, preciso criar um tela principal onde acesso todos os formulários sem precisar ir na planilha onde vai ser salvo as informações.
Boa noite, obrigado, talvez congelar a tela enquanto faz as operações.
Application.screeupdating = false
Seu código
Application.screenupdating = true
@@CanalSGP vou tentar isso. Mas em que momento coloco esse comando? Pois ao clicar para abrir o formulário muda automaticamente para a aba onde salva os dados.
Boa tarde, pode colocar a primeira linha no evento initialize do formulário e a outra no evento query close.
@@CanalSGP obg
@@CanalSGP Professor, estou com outra situação aqui. Se puder me ajudar eu lhe agradeço. Fiz um regra para um textobox. Se a data da textbox X for >= textbox Y, Então a textbox Z vai ser igual a "No prazo". Do contrário vai ser igual a "Atrasada". A regra funciona, porém percebi que está considerando apenas o dia, por exemplo, se o dia for maior que o o dia atual funciona corretamente, porém se o dia for menor que o dia atual e o mês for maior ja não funciona. Como faço para que considere a data por completo e não somente o dia?
Boa tarde mestre, poderia disponibilizar o arquivo por favor?
Boa tarde, solicite a planilha de exemplo no e-mail do site do canal, link na descrição do vídeo.
no primeiro código apresenta o seguinte erro:
Não foi possível encontrar ISAM instalável
Boa tarde, talvez não tenha marcado as referências as bibliotecas dentro do vba.
Boa noite.
Na sub ConectarPlan a linha Conexão.Open StrConexao apresenta erro.
Nome da fonte de dados não encontrado e nenhum driver padrão especificado. Consegue me ajudar ?
Bom dia, é difícil saber exatamente a causa, pode ser o nome da planilha, string de conexão não ser da versão correta do Excel.
Olá,
Se base dados tiver código de segurança?
Boa noite, não fiz algo neste sentido até o momento.
Muito BOM sua explicação , porem fiquei com umas duvidas?
Tem como Amostra esse dados em um ListView sem aprir a planilha?
Como é o comando SQL para pegar a ultima linha preenchida ao invez de pegar por ID?
Boa tarde, carregar a última linha não tentei ainda, mas carregar para uma listview pode ser feito, transferindo as informações do recordset.
@@CanalSGP fiquei hoje a manhã toda tentando e nada, mais tarde vou tentar novamente. Vai ser muito útil caso conseguir. E mais uma vez Parabéns por compartilhar seus conhecimentos
Bom dia, o vídeo no link a seguir foi feito com relação ao Access, mas a parte de carregar os dados do recordset para a o listview é igual, segue link. ua-cam.com/video/5vN60X07XSw/v-deo.html
@@CanalSGP muito obrigado, já já vou tentar aqui.
Boa tarde, ótimo trabalho. É possível durante a inserção de dados haver uma validação se já existe a informação na planilha de destino e aí sim ele acrescentar ou perguntar se deseja alterar a informação? Outra pergunta... Consigo no formulário de envio ter um controle (status) que atualize com o valor do total (qtd) que eu tenho na planilha da base de dados sem ter que abri-la para confirmar?
Outra pergunta: se na planilha de base de dados houver senha, não terei problemas para criar a conexão?
Última pergunta: Ao invés de deixar o endereço e nome da planilha da base de dados padrão. Professor O Sr. acha que facilitaria a interação do usuário com uma msgbox se ele deseja escolher a planilha da base para inserir os dados e caso positivo usar o GetOpenFileName para deixar dinâmico esse processo?
Boa noite, para verificar se o registro já existe é o mesmo procedimento da pesquisa. Pode utilizar o SQL para somar também ou para exibição dos dados pode criar uma consulta na planilha base, ficando como se fosse um espelho na planilha que usuário está utilizando. Planilha base não pode ter senha neste procedimento, mas vou estudar se tem alguma forma de salvar em planilha com senha. ua-cam.com/video/6iyMSKyWEdE/v-deo.html
Tem como fazer isso de uma planilha em vez de um formulário ?
Porque tenho um fluxo de Caixa e quando tento salvar num bd fechado não vai não reconhece as colunas e em a células nomeadas!
Tem com me ajudar ?
Boa tarde, vou verificar para gravar um vídeo salvando os dados diretamente da planilha.
Professor o meu esta apresentado erro "não foi possível encontra ISAM instalável
Bom dia, pode ser que sua versão Excel não tenha suporte, pelo que lembro tem string de conexão apenas da versão Excel 2013 para trás.
Eu fiz o exemplo exatamente como está descrito no video mas está dando erro 3709 ("Run-time error '3709'
The connection cannot be used to perform this operation. It is either closed or invalid in this context.") Como posso resolver? Ele vai para linha de código: rs.Open "SELECT MAX(ID)AS Maior FROM [Dados$];", Conexao, adOpenKeyset, adLockPessimistic - Você consegue me ajudar?
Bom dia, solicite a planilha de exemplo no e-mail do site do canal, link na descrição do vídeo. Pode ser que sua versão Excel seja outra string de conexão.
@@CanalSGP Ok vou solicitar, eu uso o excel do office 365. Obrigado pela atenção!
De nada.
no caso ali, vc identificou as colunas pelo nome... rs!Data, rs!Linha... e se eu quiser colocar pelo número da coluna?
Boa noite, não testei, mas acredito que seja rs[numero da colua]
@@CanalSGP beleza. Vou testar aqui 😊
ok
Sr Luan boa tarde. Seria melhor trazer todos os dados da planilha BD.xlsx.
Manuseá-lo na planilha principal (Alterar, Pesquisar e criar um novo) e depois devolve-los para a planilha BD?
Assim Abriríamos a planilha poucas vezes. Seria possível ou melhor?
Boa tarde, acredito que não, porque desta forma ambas ficariam pesadas e como está sendo salvo sem abrir a planilha base, a planilha com o formulário fica mais leve. Mas pode conectar ambas as planilhas utilizando a opção de consulta da aba dados da planilha.
@@CanalSGP É exatamente isso que eu quero fazer, meu controle de estoque tá muito pesado e preciso replicar o formulário em planilha vazia para ser mais rápido o processo
Oii, aqui está retornando erro na linha do RS.open select max
Bom dia, qual mensagem de erro retorna.
Sei que tenho muito a aprender, porém não consigo obter êxito em nenhum código ensinado. Faço todo o passo a passo, mas no final, é estresse puro. Fiz tudo como foi ensinado e no final foi apontado o erro que o comando não pode ser concluído, pelo fato do BDados não estar aberto. Como assim, se criei a macro ConectarPlan e a inseri antes de solicitar o rs para a formulação do ID automático?
Bom dia, entre em contato e solicite a planilha de exemplo, na descrição do vídeo tem o link do site do canal. Por aqui não conseguimos enviar porque o UA-cam não está permitindo informar e-mail nos comentários.
Esse processo pode ser aplicado caso 2 ou mais forms tivessem seus dados salvos no mesmo banco de dados?
Exemplo:
Fulano A- Forms 1
Fulano B- Forms 2
Fulano C- Forms 3
Os três preenchem ao mesmo tempo e salvam no mesmo Banco de Dados.
É aplicável? Funciona?
Boa tarde, este procedimento funciona apenas para versões Excel mais antigas. Para versões Excel mais modernas talvez seja o caso de utilizar o banco de dados Access.
Sabe dizer como fazer para fechar um form de aviso de outra planilha com vba? Ele aparece automaticamente quando a planilha que eu vou coletar os dados é aberta.
Bom dia, código para fechar formulário é unload me, mas fechar de outra planilha não sei se vai dar certo.
@@CanalSGP grato pela resposta. Eu tentei e não funcionou.
Bom dia, talvez um if para desviar a abertura do formulário, com base em algum critério.
@@CanalSGP Acho que não dá para desviar a abertura do form pq ele for programado para disparar quando abre a planilha. Se tiver como, eu não conheço a técnica.
Infelizmente não sei uma forma de fazer isso.
estou com um problema professor, a minha tabela de dados da planilha base tem colunas com fórmulas , mas quando salvo com a planilha fechada ela não acrescenta as colunas com fórmulas na tabela, mas quando ela está aberta ela acrescenta
Bom dia, talvez seja preciso fazer essas operações das fórmulas antes de enviar os dados, se envolver operação das informações na mesma linha que está sendo salva.
@@CanalSGP consegui fazer como na exclusão, abrir a planilha e depois fechar, aí deu certo, acrescentou a linha na tabela com as fórmulas
Que bom, sempre tem outra alternativa.
@@CanalSGP tenho outra dúvida, seria possível pesquisar na planilha fechada ao digitar na textbox e jogar em tempo real na listbox?
Bom dia, neste caso vai ser o filtro, pode acionar no evento exit do objeto se desejar, segue link.
ua-cam.com/video/l9lx7qFQOzE/v-deo.html
Funciona com a planilha aberta tmb?
Bom dia, funciona.
@@CanalSGP obrigado!
De nada
Boa tarde!
Estou com um problema de código na parte de Sub ConectarPlan, ao verificar se o código está funcionando corretamente com o F8 ele passa sem dar erro até chegar no Exit Sub apresentando a seguinte mensagem: “Erro em tempo de execução ‘-2147467259 (80004005)’:
Não foi possível encontrar ISAM instalável.
Você poderia me ajudar a solucionar esse problema?
Se sim eu agradeceria imensamente.
Boa tarde, solicite a planilha de exemplo no e-mail do site do canal, link na descrição do vídeo.
'Digitei a formula conforme o video, porem apresenta esse erro agora
"Erro em tempo de execução '-2147467259 (80004005)
[Microsof][ODEC Driver Manager] Nome da fonte de dados não
Encontrado e nenhum driver padrão especificado"
Public Conexao As ADODB.Connection
Public rs As ADODB.Recordset
Sub ConectarPlan()
'On Error GoTo Erro
Dim strConexao As String
Dim Provider As String, Ex As String, EnderecoPlan As String
Provider = "Provider-=Microsoft.ACE.OLEDB.12.0;Data Sources:"
EnderecoPlan = ThisWorkbook.Path & "\Base de dados.xlsx;"
Ex = "Extended Properties=""Excel 12.0 xml;HDR=YES"";"
Set Conexao = New ADODB.Connection
strConexao = Provider & EnderecoPlan & Ex
Conexao.Open strConexao
Exit Sub
Erro:
MsgBox "Erro!", vbCritical, "CONECTAR"
End Sub
Bom dia, pelo que observei digitação errada na linha de código do Provider:
Provider = "Provider-=Microsoft.ACE.OLEDB.12.0;Data Sources:" ERRADO
Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" CORRETO
@@CanalSGP Obrigado! Te amo carakkkkkk com todo respeito valeu mano👏👏👏👏
Não estou conseguindo saber como resolver este erro? Erro em tempo de execução '-2147467259 (80004005) Não foi possível encontrar ISAM instalável,
ele depura na linha Conexao.Open strConexao
Public Conexao As ADODB.Connection
Public rs As ADODB.Recordset
Sub ConectarPlan()
'on error Goto Erro
Dim strConexao As String
Dim provider As String, Ex As String, Enderecoplan As String
provider = "provider=Microsoft.ACE.OLEDB.12.0;Data Source="
Enderecoplan = ThisWorkbook.Path & "\Base de dados.xlsx;"
'Enderecoplan = ThisWorkbook.Path & "\BASE DE DADOS" & "\DADOS_AMBIENTES.xlsx;"
Ex = "Extended Properties=""Excel 12.0 xlm;hdr=yes"";"
Set Conexao = New ADODB.Connection
strConexao = provider & Enderecoplan & Ex
Conexao.Open strConexao
Exit Sub
Erro:
MsgBox "Erro!", vbCritical, "ConectarPlan"
End Sub
Sub DesconectarPlan()
If Not Conexao Is Nothing Then
Conexao.Close
Set Conexao = Nothing
End If
End Sub
Bom dia, confirme se a digitação do código está correta na linha a seguir.
No exemplo:
Ex = "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
No seu código: l e m trocado de lugar:
Ex = "Extended Properties=""Excel 12.0 xlm;hdr=yes"";"