第二次运行宏时出现错误代码 462

Error code 462 when running macro second time

提问人:Sidvi 提问时间:11/7/2017 最后编辑:CommunitySidvi 更新时间:11/7/2017 访问量:272

问:

当我尝试第二次运行我的代码时,我不断收到错误代码 462。该代码应该使用来自 excel 的数据创建一个 word 文档,然后提示用户保存该文档。正是代码的保存部分给出了错误。

代码如下:

Sub ExportToWord()

Dim WordApp As Word.Application
Dim myDoc As Word.Document
Dim WordTable As Word.Table
Dim SrcePath As String

    Range("G3:J29").Copy

    'Create an Instance of MS Word
  On Error Resume Next

    'Is MS Word already opened?
      Set WordApp = GetObject(class:="Word.Application")

    'Clear the error between errors
      Err.Clear

    'If MS Word is not already open then open MS Word
      If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")

    'Handle if the Word Application is not found
      If Err.Number = 429 Then
        MsgBox "Microsoft Word could not be found, aborting."
        GoTo EndRoutine
      End If

  On Error GoTo 0

    'Make MS Word Visible and Active
    WordApp.Visible = True
    WordApp.Activate

    'Create a New Document
    Set myDoc = WordApp.Documents.Add

    'Paste Table into MS Word
    myDoc.Paragraphs(1).Range.PasteExcelTable _
    LinkedToExcel:=False, _
    WordFormatting:=False, _
    RTF:=False

    'Autofit Table so it fits inside Word Document
    Set WordTable = myDoc.Tables(1)
    WordTable.AutoFitBehavior (wdAutoFitWindow)

    'Insert Header logo
    SrcePath = "C:\Users\SIDVI\Pictures\logo.gif"

    myDoc.Sections.Item(1).Headers(wdHeaderFooterPrimary) _
        .Range.InlineShapes.AddPicture (SrcePath)

    'Prompts users to save document
    Documents.Save NoPrompt:=False

    If Err.Number = 462 Then
        GoTo EndRoutine
    End If

EndRoutine:
'Optimize Code
  Application.ScreenUpdating = True
  Application.EnableEvents = True

'Clear The Clipboard
  Application.CutCopyMode = False

End Sub

我试图让它忽略错误消息,说去内露丁,但这也不起作用。

Excel VBA

评论

0赞 danieltakeshi 11/7/2017
尝试在最后关闭文档。文档的名称是如何保存的?
0赞 Sidvi 11/7/2017
关闭文档不起作用...。该代码提示用户保存,以便他们在保存时选择文档的名称。
0赞 danieltakeshi 11/7/2017
参考这个或这个或这个
0赞 Sidvi 11/7/2017
谢谢,但我已经经历过这些了,谷歌在这个问题上帮不上什么忙。
1赞 shrivallabha.redij 11/7/2017
它至少应该如此,尤其是在您运行 Excel 时。WordApp.Documents.Save NoPrompt:=False

答:

0赞 Vityata 11/7/2017 #1

尝试删除以下内容:

'Is MS Word already opened?
  Set WordApp = GetObject(class:="Word.Application")

只留下这个:

  If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application")

这里有人有同样的问题。

评论

0赞 Sidvi 11/7/2017
现在我收到一个没有文本的错误,只有一个红色的停车标志。
0赞 Vityata 11/7/2017
@SIDVI - 奇怪,然后写在模块的顶部,去看看编译时发生了什么。然后尝试修复它,直到您能够编译为止。Option ExplicitDebug>Compile
0赞 Sidvi 11/7/2017
谢谢你的尝试,我会继续努力解决。
2赞 Rory 11/7/2017 #2

Documents.Save应该是 。否则,您将使用一个非限定对象变量,该变量将创建对 Word 对象的孤立引用。在重新运行代码之前,还需要确保关闭正在运行的任何隐藏的 Winword 进程。myDoc.Save

评论

0赞 Sidvi 11/7/2017
我的想法也是,但是当我这样做时,我得到了编译错误。“参数数错误或属性分配无效”
1赞 danieltakeshi 11/7/2017
和?WordApp.Documents.Save
0赞 Sidvi 11/7/2017
做到了!谢谢!
0赞 Rory 11/7/2017
只是之后什么都没有。myDoc.Save