Сохранение документа Word приводит к «Команде не удалось» - PullRequest
0 голосов
/ 28 мая 2018

Я пытался сохранить текстовый документ на основе этого кода:

Private Sub CreateWordDoc()

        Dim wa As Word.Application
        Dim wd As Word.Document
        Dim wp As Word.Paragraph

        wa = CreateObject("Word.Application")
        wa.Visible = False

        wd = wa.Documents.Add
        wp = wd.Content.Paragraphs.Add

        wp.Range.Text = rtxtRecipeContents.Text

        wd.SaveAs(Application.StartupPath & "\" & RecipeName & ".docx")
        wa.Quit()

    End Sub

Однако возникает ошибка с выделением "wd.SaveAs (Application.StartupPath &" \ "& RecipeName &".docx ")" говорит, что "System.Runtime.InteropServices.COMException: 'Команда не выполнена'"

Документ никогда не сохраняется.Однако при изменении пути wd.SaveAs на что-то простое на моем диске C: он прекрасно работает.

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 28 мая 2018

Из вашего кода не видно, откуда происходит RecipeName.В VBA вы можете использовать такой код:

Private Sub CreateWordDoc(RecipeName As String, RecipeContents As String)
Dim wdApp As New Word.Application, wdDoc As Word.Document
With wdApp
  .Visible = False
  Set wdDoc = .Documents.Add(Visible:=False)
  With wdDoc
    .Range.Text = RecipeContents
    .SaveAs2 FileName:=Application.StartupPath & "\" & RecipeName & ".docx", _
      Fileformat:=wdFormatXMLDocument, AddToRecentFiles:=False
    .Close False
  End With
  .Quit
End With
Set wdDoc = Nothing: Set wdApp = Nothing
End Sub

, передавая и RecipeName, и RecipeContents (эквивалентный вашему rtxtRecipeContents.Text) в подпрограмму.Например:

Вызов CreateWordDoc (rtxtRecipeName.Text, rtxtRecipeContents.Text)

Что касается самой проблемы сохранения, у вас может не быть разрешения на запись в папку приложения.Попробуйте заменить:

Application.StartupPath & "\"

, например:

"C: \ Users \" & Environ ("Имя пользователя") & "\Документы \ "

или:

wdApp.Options.DefaultFilePath (wdDocumentsPath) &" \ "

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