Я действительно новичок в VBA. Я вставил только последнюю часть этой подпрограммы, но могу выложить остальные, если это поможет. Был бы признателен за любую помощь. Я искал несколько дней, но большинство проблем с этой ошибкой вызваны пробелами в имени пути. Спасибо дополнительно!
Этот макрос читает заголовок, затем каждую таблицу в открытом документе Word, затем записывает каждую строку в переменную htmlFile
. Затем он запускает файл PowerShell ps1, который записывает файл HTML в путь сохранения.
Отлично работает с небольшими документами Word, но когда я запускаю его с большими, я получаю эту ошибку:
Ошибка выполнения "-2147024690 (800700ce)": сбой метода "Выполнить" объекта "IwshShell3"
Код (все в Sub до этого бита читало каждую таблицу в открытом документе Word и записывало в htmlFile
как HTML-код):
Sub WriteHtml()
Dim htmlFile AS String, strText As String
'
' fill htmlFile with HTML code ...
htmlFile = htmlFile & strText
Dim pwFileLocation, htmlFileLocation As String
pwFileLocation = "'O:\Docketbk\DocketToWeb\processFile.ps1'"
'htmlFileLocation = "'W:" & stringSplits(1) & "'"
htmlFileLocation = "'Q:\OIT\Web Sites\This Site\Regulatory\Docketbk\" & stringSplits(1) & "'"
fileNameFinal = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1) & ".html"
Dim shell, command1
command1 = "powershell -noexit -command powershell.exe -Executionpolicy Bypass -File " & pwFileLocation & "-htmlContent ""'" & htmlFile & """' -savePath " & htmlFileLocation & " -fileName """ & fileNameFinal & """"
Set shell = CreateObject("WScript.Shell")
shell.Run command1, 1
End Sub
КОД POWERSHELL:
param(
[string] $htmlContent,
[string] $savePath,
[string] $fileName
)
$fullFilePath = $savePath + "\" + $fileName
Function CreateHtmlFile()
{
if (!(Test-Path -Path $fullFilePath)){
New-Item $fullFilePath -ItemType File
WriteHtmlFile
} else {
WriteHtmlFile
}
}
Function WriteHtmlFile()
{
Set-Content $fullFilePath $htmlContent.Replace('$DubQ','"')
}
createHtmlFile
КОД ПЕРЕМЕЩЕНИЯ POWERSHELL:
param(
[string] $oldFileLocation,
[string] $newFileLocation
)
net use W: \\MYSERVERNAME\Websites\PUC\Regulatory\Docketbk
Function MoveFile
{
$moveDirectory = $oldFileLocation + "/*"
Copy-Item -Path $MoveDirectory -Destination $newFileLocation -Container -Recurse -force
}
MoveFile