MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    (RESOLVIDO) Copiar apenas uma linha do excel e colar como um novo registro de tabela específica do Access.

    Compartilhe

    diegoaraujo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 10/09/2016

    (RESOLVIDO) Copiar apenas uma linha do excel e colar como um novo registro de tabela específica do Access.

    Mensagem  diegoaraujo em Qua 26 Out 2016, 16:08

    Pessoal, boa tarde!




    Busquei tanto no maximoaccess como em outros fóruns do Brasil e do exterior mas não achei função semelhante.


    A função é tão simples que não quis usar DAO ou DOA para fazer o excel e o access conversarem. O volume é muito pequeno, então mesmo que o desempenho seja bem menor da forma que estou codificando atenderá com folga minha necessidade.


    Detalhes da operação a ser realizada:


    Tenho uma planilha do Excel "Formulario_LC.xlsx", com uma aba "Formulario_LC" que sempre terá apenas duas linhas preenchidas:
      Linha 1 - cabeçalho (rótulo dos dados)
      Linha 2 - 114 colunas com dados


    Tenho uma tabela "BD_LC" no banco "CAP_be2.accdb", que foi criada com base na planilha do excel, ou seja, já está devidamente formatada para receber os dados, tanto que o "copiar e colar" manual já funciona.

    Preciso copiar a linha 2 da aba "Formulario" e colar como um novo registro na "BD_LC". Já tenho boa parte do código (e está funcionando até o momento).

    A função "gravar macro" do excel não permite a realização de comandos no access, senão já estava resolvido rs.

    Para concluir o código abaixo, preciso saber como:

    1. SELECIONAR POR INTEIRO SEMPRE A 1ª LINHA da tabela "BD_LC" EM BRANCO (a linha com asterisco - "novo registro")

    2. COLAR (da área de transferência)

    3. FECHAR O ACCESS.


    Abaixo segue o código que já tenho até o momento para referência.


    Código:
    Sub AccessMacro()

    Dim app As Object
    Set app = CreateObject("Access.Application")
    app.OpenCurrentDatabase "Q:\0001\CAP_be2.accdb"
    app.Visible = True
    app.DoCmd.openTable "BD_LC"

    Workbooks.Open Filename:= _
           "Q:\0000\Formulario_LC.xlsx"
       Rows("2:2").Select
       Selection.Copy

    app.UserControl = True '//If you want to hand control over to user, otherwise Access closes when the routine finishes

    Application.DisplayAlerts = False 'desabilite o alerta
      Workbooks("Formulario_LC.xlsx").Close
      Application.DisplayAlerts = True 'habilite novamente
    End Sub



    Agradeço a atenção dispensada!


    Última edição por diegoaraujo em Sab 12 Nov 2016, 14:30, editado 3 vez(es)

    diegoaraujo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 10/09/2016

    Re: (RESOLVIDO) Copiar apenas uma linha do excel e colar como um novo registro de tabela específica do Access.

    Mensagem  diegoaraujo em Qui 27 Out 2016, 11:42

    Bom dia Pessoal,

    Consegui resolver.

    Segue o código, caso possa ajudar alguém.

    O que o código faz:

    Salva a linha 2 de um planilha do excel como um novo registro numa tabela do Access.



    Limitações

    A tabela do access precisa ter previamente ao menos um registro, senão o código dará erro.


    Excel
    Formulario_LC.xlsm

    Access
    CAP_Be.accdb
    tabela BD_LC


    No Excel, aperte ALT+F11. No menu superior, vá em "Ferramentas", depois em "Referências...". Habilite o Microsoft Access 16.0 Object Library".

    Crie o seguinte módulo no excel:

    Código:
    Sub AccessMacro()


    Workbooks.Open Filename:= _
            "Q:\0000\Formulario_LC.xlsx"
        Rows("2:2").Select
        Selection.Copy

    Application.DisplayAlerts = False 'desabilite o alerta
        
    Dim sCaminho As String

    Dim obj As Object

    Dim appObj As Object

    sCaminho = "Q:\0001\CAP_be2.accdb"

    Set appObj = CreateObject("Access.Application")

    'A linha de baixo é opcional

    appObj.Visible = True

    appObj.OpenCurrentDatabase sCaminho

    appObj.Run "Conreg"

    appObj.Quit

      
    Workbooks("Formulario_LC.xlsx").Close

    Application.DisplayAlerts = True 'habilite novamente

    Workbooks("EXTRATOR_CAP.xlsm").Activate

    Range("txt_campos").ClearContents

    End Sub




    Crie o seguinte módulo no access:

    Código:

    Sub Conreg()
        DoCmd.OpenTable "BD_LC"
        DoCmd.RunCommand acCmdRecordsGoToLast
        DoCmd.RunCommand acCmdRecordsGoToNew
        DoCmd.RunCommand acCmdSelectRecord
        DoCmd.RunCommand acCmdPasteAppend
        DoCmd.RunCommand acCmdSaveRecord
       ' DoCmd.RunCommand acCmdCloseDatabase
    End Sub


    Agora é só atribuir o botão no excel para rodar a macro e pronto.

    Ainda estou fazendo os alertas de erro para ficar perfeito, depois posto aqui.






    Se alguém puder ajudar: algumas vezes terei que reincluir um formulario. Alguém indica qual código coloco IF eu coloco para "limpar o novo registro q acabou de receber dados colados do clipboard", ir ao registro já existente e atualizar os dados?

    Obrigado!

    diegoaraujo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 10/09/2016

    Re: (RESOLVIDO) Copiar apenas uma linha do excel e colar como um novo registro de tabela específica do Access.

    Mensagem  diegoaraujo em Ter 08 Nov 2016, 20:14

    Pessoal, tive um problema sério por aqui.

    Fiz o teste milhares de vezes e sempre funcionou comigo (quando eu mesmo preencho o excel).

    O arquivo de macro vba que gera esse formulário é exatamente o mesmo nos dois casos. Os números gerados seguem a mesma forma, conforme o print abaixo:

    Porém, para novos casos (mesmo com o formato dos números e texto exatamente igual), já no primeiro campo ele dá erro quando vou colar, dizendo que o "o valor digitado não corresponde ao tipo dessa coluna). Porém, vejam que a linha de teste (Diego) é igual, inclusive a formatação.

    Alguém tem ideia do que pode estar acontecendo?

    Muito obrigado.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6306
    Registrado : 05/11/2009

    Re: (RESOLVIDO) Copiar apenas uma linha do excel e colar como um novo registro de tabela específica do Access.

    Mensagem  Alexandre Neves em Sab 12 Nov 2016, 14:24

    Boa tarde,
    Adeqúe o título
    Respeite as regras do fórum
    Não utilize a palavra urgente, ninguém é obrigado a ajudar


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: Sab 19 Ago 2017, 12:17