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


2 participantes

    Gravar em arquivo excel - simultaneo

    avatar
    suedavid83
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 14/05/2012

    Gravar em arquivo excel - simultaneo Empty Gravar em arquivo excel - simultaneo

    Mensagem  suedavid83 14/5/2012, 16:03

    Oi pessoal, sou nova no fórum e tenho alguma experiência em access, porém estou com uma dificuldade para gravar arquivo em excel. Se eu tenho apenas um formulário e a partir dele eu gravo dados em excel funciona perfeitamente, porém, eu quero ter 2 formulários rodando ao mesmo tempo, onde ambos farão gravação de excel. Só que qdo ambos vão gravar ao mesmo tempo, em um deles da erro e fala que o objeto está sendo utilizado.

    Até entendo que se eu estivesse gravando dentro do mesmo arquivo (mesmo nome) deveria dar o erro, mas o nome é diferente, então eu entendo que não deveria dar erro nenhum. Vejam os códigos que estou utilizando:

    'Função para criar o arquivo (chamada uma única vez no início do processamento)
    Public Function criaArquivoExcel(caminho As String, nomeArquivo As String)
    Dim ExcelSheet As Object
    Set ExcelSheet = CreateObject("Excel.Sheet")
    ExcelSheet.Application.Visible = False
    ExcelSheet.SaveAs caminho & nomeArquivo
    ExcelSheet.Application.Quit
    Set ExcelSheet = Nothing
    End Function

    'Função utilizada para gravar em arquivo. Chamada a cada célula a ser gravada.
    Public Function gravaArquivo(caminho As String, nomeArquivo As String, linha As Integer, coluna As String, texto As String)
    Dim xlWrkBk As excel.Workbook
    Dim xlSht As excel.Worksheet
    Set xlWrkBk = GetObject(caminho & nomeArquivo)
    Set xlSht = xlWrkBk.Worksheets(1)
    xlSht.Cells(linha, coluna) = texto
    xlSht.Cells.EntireColumn.AutoFit
    If linha = 1 Then
    xlSht.Cells(linha, coluna).Interior.ColorIndex = 3
    xlSht.Cells(linha, coluna).Font.Bold = True
    End If
    xlWrkBk.Windows(nomeArquivo).Visible = True
    xlWrkBk.Save
    xlWrkBk.[Close]
    Set xlWrkBk = Nothing
    End Function

    Existe uma outra forma de criar a lógica, de forma que as aplicações não concorram?

    Obrigada,
    Sue
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  criquio 14/5/2012, 16:11

    Olá, seja bem vinda ao fórum!

    Tente rodar a função duas vezes, passando o nome de um formulário a cada vez.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    suedavid83
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 14/05/2012

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  suedavid83 14/5/2012, 17:10

    Oiii, obrigada Smile

    Então, na verdade os dois formulários devem rodar simultaneamente, não posso esperar um processar para então o outro começar. E também eu não chamo o formulário, ele possui uma trigger que roda a cada 10 minutos, por exemplo.

    A idéia é deixar os dois formulários rodando.. e ambos vai gravar em arquivo excel.

    Obrigada,
    Sue.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  criquio 14/5/2012, 18:40

    Você pode configurar o timer para um gravar o arquivo um minuto depois do outro. Pode tambem criar um formulário para abrir no tempo específico, gravar um arquivo e gravar o outro em seguida. Dias atrás criei um aplicativo para uma empresa que exporta cerca de 16 a 30 arquivos doc e xls e eu fiz dessa maneira.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    suedavid83
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 14/05/2012

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  suedavid83 14/5/2012, 20:04

    Hmm, entendo seu ponto de vista, mas dessa forma não funciona para o que eu preciso.

    Só para vc entender melhor, um formulário é de monitoramento de processos, onde roda a cada 30 minutos. Dentro desse formulário existem diversas "tasks" que são funções que verificam esses processos, e dependendo do resultado é gerado o arquivo excel. Existe cerca de 15 tasks nesse formulário, mas neste caso não tenho o problema de concorrência pq cada uma task só roda assim que a outra terminar. Até aqui tudo bem...

    Dai o segundo formulário vai rodar o dia inteiro, pq é um processo mto pesado.. e o arquivo será gerado durante todo esse período. Não tem como eu monitorar e intercalar dessa forma que está dizendo.

    A minha dúvida é: porque o Access acusa que o objeto está sendo usado se eu uso nome de arquivos diferentes? É alguma coisa de errado que está no código?

    Obrigada,
    Sue
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  criquio 14/5/2012, 20:33

    Bom, cada objeto pode ser utilizado para uma tarefa. Talvez seja o caso de se declarar dois objetos:

    Dim ExcelSheet As Object, ExcelSheet2 As Object
    Set ExcelSheet = CreateObject("Excel.Sheet")
    Set ExcelSheet2 = CreateObject("Excel.Sheet")


    E repete os outros procedimentos para o segundo objeto.

    Tambem pode mudar a função para dentro do formulário, mudando-a de Public para Private. Mesmo nesse segundo caso, é bom que os objetos tenham nomes diferentes.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    suedavid83
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 4
    Registrado : 14/05/2012

    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  suedavid83 15/5/2012, 20:43

    Olá..

    Eu tentei fazer oq disse.. deixei as funções em PRIVATE como vc disse (nos dois formulários) e mudei o nome dos objetos em um deles. Dai qdo coloco pra rodar dá erro.. cada hora num lugar diferente.. rs.. mas sempre relacionado com o excel. O erro mais comum é "Object Required".

    Eu estava pensando em um dos formulários gerar um arquivo CSV, sabe? De repente até usando a instrução de gravar arquivo .txt, dai seriam lógicas diferentes e talvez não teria problema. Eu até já tentei fazer isso, mas fazendo assim eu não consigo mudar a cor da primeira linha do arquivo (assim como eu faço no excel). Vc sabe se é possível?

    A instrução que estou usando para gravar arquivo CSV é essa:

    Function criaArquivoCSV()
    Dim caminho As String
    Dim nomeArquivo As String

    nomeArquivo = "texto.csv"
    caminho = "xxxxxxxxxx"

    Dim filesys, filetxt
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set filetxt = filesys.OpenTextFile(caminho & nomeArquivo, ForAppending, True)

    For lin = 1 To 10
    filetxt.WriteLine ("texto grande demais" & lin)
    Next

    filetxt.Close
    End Function

    Conteúdo patrocinado


    Gravar em arquivo excel - simultaneo Empty Re: Gravar em arquivo excel - simultaneo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/5/2024, 12:26