Я хотел бы преобразовать несколько файлов в папке из .xlsm в CSV.Файлы Excel содержат несколько листов.Поскольку мои знания в Powershell очень ограничены в тот момент, когда я искал в Интернете сценарий и нашел его в Извлеките и преобразовайте все листы Excel в файлы CSV с помощью PowerShell
Проблема заключается в том, что наНесколько раз мне удавалось заставить эти сценарии работать (один сценарий вызывает другой), но я не выяснил, когда и как это происходит.Я запускаю сценарий (ы) из Powershell ISE и получаю следующее сообщение об ошибке:
Исключение вызывает "Open" с аргументом (ами) "1": "Извините, мы не смогли найтиC: \ Docs. Возможно, он был перемещен, переименован или удален? "В C: \ Docs \ xlstocsv.ps1: 9 char: 5 + $ wb = $ E.Workbooks.Open ($ excelFile) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: ComMethodTargetInvocation
Поскольку я успешно запускал эти сценарии пару разтогда правильно предположить, что сценарии верны и что-то не так с моей настройкой Powershell (?)?У меня закончились идеи.
PS Я надеюсь, что здесь разрешено вставлять ссылки на другие веб-страницы.
Редактировать код добавлен.
Скрипт один (тот, который я начинаю с Powershell ISE):
$ens = Get-ChildItem "C:\Docs\" -filter *.xlsm
foreach($e in $ens)
{ [threading.thread]::CurrentThread.CurrentCulture = 'en-US'
ExportWSToCSV -excelFileName $e.BaseName -csvLoc "C:\Docs\Final\"
}
Сценарий два :
Function ExportWSToCSV ($excelFileName, $csvLoc)
{ [threading.thread]::CurrentThread.CurrentCulture = 'en-US'
$excelFile = "C:\Docs\"
$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open($excelFile)
foreach ($ws in $wb.Worksheets)
{
$n = $excelFileName + "_" + $ws.Name
$ws.SaveAs($csvLoc + $n + '.csv', 6)
}
$E.Quit()
}
ExportWSToCSV -excelFileName "file" -csvLoc "C:\Docs\Final\"
Я добавил "[threading.thread] ::CurrentThread.CurrentCulture = 'en-US' ", и я смог успешно запустить эти сценарии, но только один раз.Так что это в принципе, кажется, я могу отбросить эту строку из кода.