Usuário com melhor resposta
Problemas ao gerar planilha

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
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.
- Editado InfoProfi quinta-feira, 8 de novembro de 2012 20:33
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 16 de novembro de 2012 11:04
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
-
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.
-
-
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.
-
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
-
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 -
-
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.
- Editado InfoProfi quinta-feira, 8 de novembro de 2012 20:33
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 16 de novembro de 2012 11:04