首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Excel范围导出到Word

将Excel范围导出到Word
EN

Stack Overflow用户
提问于 2021-12-16 17:52:03
回答 1查看 137关注 0票数 1

从Excel使用VBA,我想复制一个范围从Excel到Word,我被卡住了!我试图通过以下方式重新创建我手动完成的工作:

  1. 选择一个单元格范围并复制
  2. 打开Word
  3. 选择“粘贴特殊”和“格式化文本”

我尝试过在互联网上找到的多个版本的代码,但我无法让代码运行。我确实在Excel中将"Microsoft 16.0对象库“作为引用进行了检查。

我得到的错误是“运行时错误91 -对象变量或块变量未设置”。我已经在下面的代码中标记了它失败的地方。当我运行这个程序时,它会启动Word,但是它不会打开一个新文档。

这是我得到最远的密码。

代码语言:javascript
复制
Sub ExcelToWord()
 
    Dim PageNumber As Integer
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim FileToOpen As String
    Dim strPath As String
 
    FileToOpen = "Excel Link test.docx"
    strPath = "C:\"
 
    'the next line looks to a cell to decide what page number to scroll to
    PageNumber = 1 'Later
 
    On Error Resume Next
    Set wrdApp = GetObject(, "Word.Application")
    If wrdApp Is Nothing Then
        Set wrdApp = CreateObject("Word.Application")
        Set wrdDoc = wrdApp.Documents.Open(strPath & FileToOpen)
    Else
        On Error GoTo notOpen
        Set wrdDoc = wrdApp.Documents(FileToOpen)
        GoTo OpenAlready
notOpen:
        Set wrdDoc = wrdApp.Documents.Open(strPath & FileToOpen)
    End If
 
OpenAlready:
 
    On Error GoTo 0
    Range("A6:D11").Copy ' med WS Name
    With wrdApp
 '------> Fails Here
        .Selection.Goto What:=1, Which:=2, Name:=PageNumber
        .Visible = True
        .Selection.Paste
    End With
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
 
End Sub

一如既往,谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-12-17 08:08:34

请测试下一段代码。它将打开一个新的空白文档并使用它,而不是由代码打开的文档:

代码语言:javascript
复制
Sub ExcelToWord() 
    Dim PageNumber As Integer, wrdApp As Word.Application, wrdDoc As Word.Document
    Dim sh As Worksheet
    
    Set sh = ActiveSheet 'use here the sheet you need
    PageNumber = 1
 
    On Error Resume Next
     Set wrdApp = GetObject(, "Word.Application")
     If wrdApp Is Nothing Then
        err.Clear: On Error GoTo 0
        Set wrdApp = CreateObject("Word.Application")
     End If
    On Error GoTo 0
    Set wrdDoc = wrdApp.Documents.Add 'add a blank document
    wrdApp.Visible = True             'make Word application visible
                                      'only for debugging, if not want to be visible
                                      'and you will save it (programmatically) in the next steps...
    sh.Range("A6:D11").copy ' med WS Name
    With wrdApp
        .Selection.Goto What:=1, which:=2, Name:=PageNumber
        .Visible = True
        .Selection.Paste
    End With
    Set wrdDoc = Nothing: Set wrdApp = Nothing
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70383529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档