none
Problemas ao gerar planilha RRS feed

  • Pergunta

  • Estou gerando várias planilhas, e cada qual tem suas caracteristicas especificas, como conjunto de celulas mescladas, no caso.

    O problema é que, após gerar uma, salvo-a, e começo a gerar outra, porém, as configurações de celulas mescladas se repetem em todas. Já tentei reinicializar o objeto que instancia a planilha, o workbook, mas continuam sempre as configurações da primeira planilha, em relação a celulas mescladas sendo mantidas, sempre.

    Alguém poderia me dar uma dica??

    (...) NEWSHEET: '---> Inicio a planilha no excel Set Book = APP.Workbooks.Add Set Sheet = APP.ActiveWorkbook.ActiveSheet (...) with Sheet

    '---> Gero a planilha, mesclo células, etc!

    (...)

    '---> Salvo a planilha, e instancio uma nova planilha, para gerá-la novamente .Name = cRptHead(CStr(BASUser.Country)) & IIf(GroupRpt, "_" & SpecieInfo.Species, "") .SaveAs Replace(ExcelFilePath, ".xls", IIf(GroupRpt, "_" & SpecieInfo.Species, "") & ".xls") ' ExcelFilePath GoTo NEWSHEET end with



    • Editado InfoProfi segunda-feira, 5 de novembro de 2012 20:27
    segunda-feira, 5 de novembro de 2012 20:24

Respostas

  • Agradeço a todos, pela atenção, problema resolvido.

    Eu removi a aplicação das condicionais do filtro sobre o recordset para fora do método, e o chamo para cada item, gerando as planilhas então.

    Deste modo, a coisa funcionou. 

    Imagino que não deu pra entender perfeitamente meu problema, porque, nem eu entendi, e realmente, é algo meio estranho.

    Mas de qualquer maneira, agradeço a todos, que se dispuseram a me ajudar.



    quinta-feira, 8 de novembro de 2012 20:32

Todas as Respostas

  • Em primeiro lugar, vamos usar a terminologia padrão para tornar a discussão mais técnica. Vamos considerar que:

    APP - variável que representa um objeto Excel.Application, no caso, o Excel.

    Book - variável que representa um objeto Workbook, isto é, uma pasta de trabalho.

    Sheet - variável que representa um objeto Worksheet, isto é, uma planilha.

    No meu entendimento, essa formatação sempre ocorrerá porque após salvar a planilha, você faz um laço (utilizando a instrução GoTo) para refazer essa mesma formatação, a não ser que você use um bloco de código para diferenciar a formatação de cada uma das planilhas que itera o laço.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 6 de novembro de 2012 00:01
    Moderador
  • Obrigado pela atenção, meu caro Benzadeus.

    Seguem algumas considerações: 

    Ao direcionar meu código para o label NEWSHEET, eu crio um novo workbook, e anexo uma nova planilha a ele. A partir daí, jogo dados nas células, e mesclo quando necessário. 

    As configurações de mesclagem de células, são totalmente específicas, e são aplicadas de acordo com o conjunto de registros com o qual estou trabalhando. Todos, sempre diferentes, e inclusive gero um log com todas as celulas mescladas, por arquivo. O que demonstra que, a cada planilha gerada, as células mescladas não correspondem ao resultado final, e somente corresponderiam, se, a mesclagem de células fosse mantida, desde o primeiro arquivo. Ou seja, se na nova planilha, onde não mesclo determinadas células, eu as tivesse mesclado, da maneira como foram mescladas na planilha anterior.

    É uma coisa muito doida! 

    Espero ter sido claro. Mais uma vez, obrigado.

    quarta-feira, 7 de novembro de 2012 05:12
  • A única forma de descobrir se há alguma inconsistência é você postar o código completo aqui. É possível?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 7 de novembro de 2012 07:05
    Moderador
  • Possível é, só não é preciso. Como eu te falei, eu mesclo algumas células, dependendo de condições específicas. Porém, estão sendo mescladas células num intervalo, não determinado, à partir da primeira planilha que contém células mescladas. De modo que, se eu me referir a uma célula que foi mesclada na planilha anterior, ele enxerga esta célula como um intervalo mesclado, e não como uma célula individual, que é o que deveria, já que estou começando uma nova planilha, e as células que mesclei na planilha anterior, não foram mescladas na planilha atual. Este código é funcional, testado e aprovado, por alguns meses, esteve perfeito. Porém tive que fazer um upgrade, para gerar várias planilhas, em lugar de uma só, e acontece este erro. São erros esquisitos,do tipo que só quem viu, acredita. Mas se você não tiver uma ideia, vou ver se posto o método depois. Novamente, obrigado.
    quarta-feira, 7 de novembro de 2012 13:43
  • Ainda assim acho difícil analisar o que está acontecendo. A minha dica, dado este cenário, é você liberar a memória de todas as variáveis que representam um objeto ao término de cada laço (isto é, antes da instrução GoTo), como:

    Set Book = Nothing
    Set Sheet = nothign
    Set rng = Nothing
    '...atribuir todas as variáveis objeto a nothing


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 7 de novembro de 2012 21:27
    Moderador
  • Por que utilizar o Goto?

    Utilize um for fica muito mais simples, por exemplo

    Sub GeraArquivo()
    Dim xlapp As New Excel.Application
    Dim wb As Workbook
    Dim i As Integer
    
    
    Const qtdeArq As Integer = 3
    
    For i = 1 To qtdeArq
        Set wb = xlapp.Workbooks.Add
        wb.SaveAs ThisWorkbook.Path & "\wb_" & i
    Next i
    
    End Sub




    Bruno Silva Leite
    officevb.com

    quarta-feira, 7 de novembro de 2012 22:38
  •  É exatamente o que faço, reinicializo todas estas variáveis. E continua dando a mesma coisa.

    Vou postar o código depois. 

    Novamente agradeço.

    quinta-feira, 8 de novembro de 2012 02:40
  • Agradeço a todos, pela atenção, problema resolvido.

    Eu removi a aplicação das condicionais do filtro sobre o recordset para fora do método, e o chamo para cada item, gerando as planilhas então.

    Deste modo, a coisa funcionou. 

    Imagino que não deu pra entender perfeitamente meu problema, porque, nem eu entendi, e realmente, é algo meio estranho.

    Mas de qualquer maneira, agradeço a todos, que se dispuseram a me ajudar.



    quinta-feira, 8 de novembro de 2012 20:32