Любая возможность удалить программно искаженные имена (с пробелами) в Excel (2007/2010) - PullRequest
2 голосов
/ 03 января 2012

Есть ли способ переименовать или удалить поврежденные ранжированные имена, которые включают пробелы, например, "ACVCutoff_4 1" в файле Excel с помощью powershell?Я застрял на этом.Переименование или удаление имен не выполняется.

$Excel = New-Object -Com Excel.Application
$wbTo = $Excel.workbooks.open($path)
foreach($name in $wbTo.Names)
{
    $name.Name = $tt -replace '\s+', '_' # name is not affected
    $name.delete() # returns an error Exception calling "Delete" with "0" argument(s): "Exception from HRESULT: 0x800A03EC"
}

Что я пробовал:

Смежный вопрос

  1. Включение надстройки диспетчера имен не решает проблему.
  2. «Проверить эталонный стиль R1C1» (проверить ссылку) - как этого можно достичь, написав код?

Есть ли другие предложения?Буду признателен за вашу помощь

Я использую powershell v2 и Excel 2007 / 2010.

Это файл с неправильными именами: XlsWithBrokenNames

SOLUTION BYКрис Нейлсен для тех, кто тоже застрял на этом:

#$wbTo - is workbook with corrupt names
$tempFilePath = $path + "temp.xlsm"
$goodFilePath = $path + "cleanFile.xls"
$wbTo.SaveAs($tempFilePath,52) #save as xlsm
$wbTemp = $Excel.workbooks.open($tempFilePath) # open target
# delete names here
$wbTemp.SaveAs($goodFilePath,56) #save as xls

1 Ответ

1 голос
/ 03 января 2012

Все прямые манипуляции с испорченными именами, которые я пробовал, потерпели неудачу!

Но, вот возможная альтернатива:
SaveAs Ваша книга как .xlsm Вы должны получить диалоговое окно с жалобой на недействительноеимена, с возможностью переименования и кнопкой Ok to All.После сохранения закройте и снова откройте файл, Save As и .xls, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...