MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA.

    pedrovaleriojr
    pedrovaleriojr
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 13/04/2021

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Empty [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA.

    Mensagem  pedrovaleriojr 26/7/2024, 15:51

    ATENÇÃO! Acrescentar no projeto a referência: Microsoft Excel 16.0 Object Library

    Prezados,

    Vasculhei a Internet e o fórum, mas não consegui atingir meu objetivo. Evil or Very Mad
    Hoje até achei que havia encontrado a solução, mas o arquivo CSV não foi atualizado como eu desejava.

    Vou explicar:

    Se pegarmos uma planilha do Excel e Salvar como... (CSV), fica bonitinho, com os campos distribuídos nas células. Até aqui OK.
    AD-SALARIO 1 260 JOÃO DA SILVA "1200.00" "19/07/2024" AD-07/2024
    AD-SALARIO 1 263 FULANO DE TAL "1600.04" "19/07/2024" AD-07/2024

    No CSC alterado:
    "1 1 263 FULANO DE TAL """"""1600.00"""""" """"""19/07/2024"""""" AD-07/2024"
    "1 1 260 JOÃO DA SILVA """"""1200.00"""""" """"""19/07/2024"""""" AD-07/2024"

    TUDO NA COLUNA A1.

    Preciso:
    O sistema da empresa importa dados da folha de pagamento e tem o formato CSV como padrão para importação, então imaginei que se eu gerasse o arquivo seria muito mais fácil do que digitar um a um, correto? Seria mesmo...

    Gerei arquivo TXT, CSV, XLS, enfim, testei todos os formatos possíveis.
    Observei que o Excel, quando Salva como..., usa o formato "CSV UTF-8 (Delimitado por vírgula)".
    Seguindo a tabela de códigos abaixo, mesmo escolhendo o formato correto, o CSV sai errado. O que é errado? Não sai nas colunas bonitinho, como quando salva pelo Excel. Sai tudo em uma célula só. pale

    Name Valor Descrição Extensão
    xlCSV 6 CSV *.csv
    xlCSVMac 22 Macintosh CSV *.csv
    xlCSVMSDOS 24 MSDOS CSV *.csv
    xlCSVUTF8 62 UTF8 CSV *.csv
    xlCSVWindows 23 Windows CSV *.csv

    A minha ideia até que foi boa, mas não teve o resultado desejado.

    A ideia: mantenho a planilha gerada pelo sistema como MODELO. Limpo o conteúdo das células e depois preencho novamente com as informações que quero. Até consegui fazer isso, mas gerou em uma célula apenas.

    Anexo o banco de dados de exemplo. O que estou fazendo de errado???Shocked

    Queria gerar o CSV igual ao MODELO original para não ter de gerar a planilha como XLSX e depois abrir a mesma e salvar como... pelo Excel.

    É muita informação, eu sei, mas vamos respondendo aqui, caso haja alguma dúvida.

    Desde já, valeu pessoal. Esse fórum é muito bom e já me ajudou bastante. study
    Anexos
    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. AttachmentCSV.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (43 Kb) Baixado 8 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Empty Re: [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA.

    Mensagem  Alexandre Neves 26/7/2024, 21:38

    Boa noite Pedro
    Mudei a sua dúvida para esta sala
    Respeite as regras do fórum para o mantermos organizado e de melhor utilização para todos.
    A sala de repositórios não pode ser usada para colocar dúvidas


    .................................................................................
    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

    pedrovaleriojr gosta desta mensagem

    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3472
    Registrado : 13/12/2016

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Empty Re: [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA.

    Mensagem  Alexandre Fim 27/7/2024, 01:46

    Olá Pedro,

    Substitua o codigo anterior por este:

    Código:

    Public Sub criarPlanilha()
        Dim abreExcel As Object
        Dim csvOrigem As Workbook
        Dim planilhaOrigem As Worksheet
        Dim strArquivoCSV As String
        Dim rstRotina As Recordset
        Dim strRotina As String
        Dim valorPagamento As String
        Dim j As Long
           
        ' Indica o caminho do arquivo CSV.
        strArquivoCSV = CurrentProject.Path & "\MODELO.csv"
       
        ' Abre o Excel.
        Set abreExcel = CreateObject("excel.application")
       
        ' Torna o aplicativo Excel invisível.
        abreExcel.Application.Visible = False
       
        ' Abre a planilha.
        Set csvOrigem = Workbooks.Open(strArquivoCSV)
       
        ' Seleciona a primeira planilha.
        Set planilhaOrigem = csvOrigem.Sheets(1)
        planilhaOrigem.Activate
       
        'Insere os dados nas células desejadas
        strRotina = "SELECT tblFuncionarios.CodSienge, tblFuncionarios.Nome, tblMovimentos.MovValorProv, tblMovimentos.MovPagamento " & _
                    "FROM tblFuncionarios INNER JOIN tblMovimentos ON tblFuncionarios.FuncionarioID = tblMovimentos.MovFuncionario " & _
                    "WHERE tblMovimentos.MovEvento = 17 " & _
                    "ORDER BY tblFuncionarios.Nome;"
        Set rstRotina = CurrentDb.OpenRecordset(strRotina, dbOpenDynaset)
        With rstRotina
            .MoveFirst
            .MoveLast
            .MoveFirst
            For i = 1 To .RecordCount
                valorPagamento = Format(.Fields("MovValorProv").Value, "#,##0.#0")
                valorPagamento = Replace(Replace(valorPagamento, ".", ""), ",", ".")
               
                For j = 1 To 12
                    Select Case j
                        Case 1:  planilhaOrigem.Cells(i, j).Value = "1" & ";"
                        Case 2:  planilhaOrigem.Cells(i, j).Value = 1 & ";"
                        Case 3:  planilhaOrigem.Cells(i, j).Value = .Fields("CodSienge").Value & ";"
                        Case 4:  planilhaOrigem.Cells(i, j).Value = .Fields("Nome").Value & ";"
                        Case 5:  planilhaOrigem.Cells(i, j).Value = valorPagamento & ";"
                        Case 6:  planilhaOrigem.Cells(i, j).Value = .Fields("MovPagamento").Value & ";"
                        Case 7:  planilhaOrigem.Cells(i, j).Value = "" & ";"
                        Case 8:  planilhaOrigem.Cells(i, j).Value = "" & ";"
                        Case 9:  planilhaOrigem.Cells(i, j).Value = "" & ";"
                        Case 10: planilhaOrigem.Cells(i, j).Value = "" & ";"
                        Case 11: planilhaOrigem.Cells(i, j).Value = "AD-" & Format(Month(.Fields("MovPagamento").Value), "00") & "/" & Year(.Fields("MovPagamento").Value) & ";"
                        Case 12: planilhaOrigem.Cells(i, j).Value = "" & ";"
                    End Select
                Next j
                .MoveNext
            Next i
        End With
           
        ' Salva as alterações.
        csvOrigem.Save
       
        ' Fecha a planilha e o Excel.
        csvOrigem.Close
        abreExcel.Quit
       
        ' Limpa as variáveis.
        Set csvOrigem = Nothing
        Set planilhaOrigem = Nothing
        Set abreExcel = Nothing
    End Sub



    Vai funcionar !!

    É isso

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Setinf11
    Sistemas e Tecnologia Ltda

    ribeiroguaruja e pedrovaleriojr gostam desta mensagem

    pedrovaleriojr
    pedrovaleriojr
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 13/04/2021

    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Empty Gerar arquivo CSV (formato Excel) usando o Access VBA.

    Mensagem  pedrovaleriojr 27/7/2024, 19:59

    Valeu demais, Alexandre!!!

    Só o detalhe do ";" Laughing

    Pessoal aqui é muito fera mesmo.

    Vou marcar o tópico como resolvido.

    Abração a todos!!! cheers

    Conteúdo patrocinado


    [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA. Empty Re: [Resolvido]Gerar arquivo CSV (formato Excel) usando o Access VBA.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/10/2024, 02:40