Привет всем. Я открываю лист .xlsm в windows powershell, а затем записываю данные в различные ячейки из переменных read-host. Все отлично работает, кроме случаев, когда я go для сохранения файла с помощью powershell. Это дает мне эту ошибку, указанную ниже, и отказывается сохранять ее в формате .xlsm, файл уже является файлом .xlsm, поэтому я не конвертирую его. У меня нет проблем при использовании этого кода для сохранения форматов .xlsx, что, вероятно, является моей проблемой. Я немного новичок, прости мое невежество.
"Это расширение нельзя использовать с выбранным типом файла. Измените расширение файла в текстовом поле« Имя файла »или выберите другой тип файла, изменив параметр« Сохранить как ». type. "
Вот код, который я использую для сохранения в .xlsm. Я удалил большую часть файловой структуры для защиты конфиденциальности и упростил ее, мой код работает просто отлично, но не в части сохранения в .xlsm, пожалуйста, помогите ...
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault
$XL = New-Object -comobject Excel.Application
$Num = Read-Host - Prompt 'What is the number?'
$FilePath = "V:\$fileName.xlsm"
$workbook = $XL.Workbooks.Open($FilePath)
$WS = $workbook.Worksheets("Sheet1")
$ws.Cells.Item(2,29) = "$Num"
$XL.DisplayAlerts = $False
$WB.SaveAs($FilePath)
$WB.Close
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($XL) | Out-Null
РЕШЕНИЕ:
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlOpenXMLWorkbookMacroEnabled
$XL = New-Object -comobject Excel.Application
$Num = Read-Host - Prompt 'What is the number?'
$FilePath = "V:\$fileName.xlsm"
$workbook = $XL.Workbooks.Open($FilePath)
$WS = $workbook.Worksheets("Sheet1")
$ws.Cells.Item(2,29) = "$Num"
$XL.DisplayAlerts = $False
$WB.SaveAs($FilePath,$xlFixedFormat)
$WB.Close
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($XL) | Out-Null