Existe uma maneira programática de saber se uma planilha do Excel está corrompida?

0

Temos uma planilha de excel antiga e bem grande. Ele é salvo todos os dias várias vezes e parece que uma vez por semana a planilha é corrompida.

Ambiente:

  • Todos usam o build x64 do office

  • usa vários plug-ins, incluindo o Bloomberg e um plug-in interno

  • usa vários RTDs incluindo o Bloomberg e um interno

  • estamos usando a versão mais recente do Office e do Excel

  • mistura de máquinas Win7 e Win10 (também x64).

Existe uma maneira programática de saber se uma planilha de excel salva é corrompida sem carregá-la e inspecionar manualmente se ela funciona bem?

A maioria (todas?) do tempo em que ele está corrompido, ele não será aberto ou ele irá falhar quando você fizer algo como CRTL-F .

Salvamos a planilha várias vezes por dia e gostaríamos de verificar cada salvamento se pudéssemos.

    
por chollida 20.09.2018 / 15:28

1 resposta

1

Eu pessoalmente sugiro escrever um script de powershell.

Abaixo, um exemplo básico de como abrir todas as planilhas na área de trabalho.

Se o arquivo estiver ok / pode ser aberto, o script mostrará o nome da primeira folha da planilha.

Se o arquivo estiver corrompido / não aberto, o PowerShell lançará uma exceção.

Isso pode ser facilmente estendido para fornecer o nome do arquivo e um status em uma tabela.

$user = $env:USERNAME
$Location = "c:\users\$user\desktop\"

$ExcelFiles = Get-ChildItem -Path $Location -Filter *.xls*

Foreach ($ExcelFile in $ExcelFiles){
    $Excel = New-Object -ComObject Excel.Application
    $Workbook = $Excel.Workbooks.Open($ExcelFile.FullName)
    $workSheet = $Workbook.Sheets.Item(1)
    $WorkSheet.Name
}

Dito isto, inspecionar os problemas com a própria planilha também seria uma boa ideia.

As coisas que eu notei para causar problemas com planilhas grandes são muitas formatações personalizadas em toda a planilha (fontes diferentes, texto colorido, etc.).

Pode valer a pena considerar iniciar uma nova planilha e colaborar com as informações dos dois em outro caso seja necessário?

Espero que isso ajude.

    
por 20.09.2018 / 16:14