O que mudou entre o Excel 2007 e 2010 que está fazendo com que minha cópia da planilha copiada falhe?

2

Quando faço isso no Excel 2010, isso falha, mas funciona no Excel 2007:

  1. Crie uma nova pasta de trabalho e insira uma imagem em uma planilha ou obtenha uma planilha preexistente com uma imagem.
  2. Copie a planilha em uma nova pasta de trabalho clicando na guia de planilha e clicando em Mover ou copiar e, em seguida, escolhendo (nova pasta de trabalho) como o destino.
  3. Feche a pasta de trabalho de origem.
  4. Tentativa de salvar a nova pasta de trabalho.

A mensagem é: "Foram detectados erros ao salvar 'myfilepathhere.xlsx'. O Microsoft Excel pode salvar o arquivo para remover ou reparar alguns recursos. Para fazer os reparos em um novo arquivo, clique em Continuar. Para cancelar o salvamento do arquivo, clique em Cancelar ". Clicar em continuar exibe outra janela de diálogo de arquivo, seguida por mais erros de reparo.

Parece nos bastidores que está procurando a pasta de trabalho de origem quando ele tenta salvar a imagem na nova pasta de trabalho de destino. Nenhuma mensagem de erro útil, claro, graças à microsoft. Mas esse problema nunca aconteceu no Excel 2007.

A razão pela qual estou fechando o bloco de notas antes de salvar, é porque eu não preciso que o usuário final o veja depois que eu puxar programaticamente uma folha de rosto (com a imagem) dele, em um aplicativo de interoperabilidade.

Obrigado por qualquer ajuda.

Atualização: Eu não encontro esse problema se eu abrir a pasta de trabalho de origem como "somente leitura" (eu faço isso programaticamente usando a interoperabilidade do Excel).

Snorex
fonte
Tem certeza de que o problema é causado ao fechar o documento de origem?
@ RandolphWest: Sim, com certeza. Quando a pasta de trabalho de origem é aberta, a pasta de trabalho de destino é salva sem mensagens de erro. Quando a pasta de trabalho de origem é fechada, a pasta de trabalho de destino não é salva corretamente. Talvez no Excel 2007, fazer uma cópia da planilha para uma nova pasta de trabalho copie a imagem incorporada imediatamente ... mas, em 2010, ela procura o documento de origem ao salvar. Também não importa / ainda quebra o destino salvar quando eu faço um worksheet.copy em c # interop, e também quando eu recriá-lo manualmente usando as etapas acima no Excel. Obrigado.
Snorex
Portanto, a resposta óbvia é não fechar o documento de origem até terminar de processá-lo. Ou altere o código para colar-especial, que cola uma cópia da imagem e não um link para a (s) imagem (s), se for esse o problema.
Não quero uma situação em que o usuário final possa fechar a pasta de trabalho de origem e, assim, quebrar a pasta de trabalho de destino. Eu prefiro nem mesmo mostrar as pastas de trabalho de origem para o usuário final, o que eu não precisei fazer, até encontrar meu problema com o Excel 2010. Se eu quisesse que meu usuário salvasse sua pasta de trabalho criada programaticamente, eu teria que mantenha todos os documentos de origem abertos para que o destino seja salvo corretamente.
Snorex
1
Você pode precisar repensar a maneira como você está fazendo isso de qualquer maneira. Existem vários pontos de falha no processo. Isso obviamente está fora do escopo desta questão.

Respostas:

1
  1. Abra uma planilha vazia e insira uma imagem.
  2. Salve a planilha e, por exemplo, nomeamos spreadsheet1.xlsx
  3. Fechar spreadsheet1.xlsx
  4. Abra outra planilha, salve e nomeie spreadsheet2.xlsx
  5. Agora abra spreadsheet1.xlsx
  6. Pressione o botão salvar antes de copiar / mover a guia / folha.
  7. Copie ou mova a folha / guia spreadsheet1.xlsxque contém a imagem paraspreadsheet2.xslx
  8. Se você selecionou Copy, feche manualmente spreadsheet1.xlsx; Se você selecionou Move, o Excel será fechado spreadsheet1.xlsxautomaticamente.

Agora você poderá salvá-lo com sucesso.

Fabio
fonte
Você não respondeu a parte "o que mudou".
Snorex