VBA(循环和格式化问题)Excel到Word粘贴和打印

时间:2014-01-03 16:49:46

标签: excel vba excel-vba ms-word ms-office

我会尽可能简短,不要让它过于复杂。我需要从Excel复制名称和姓氏,将其粘贴到Word模板并打印。我有一个巨大的excel文件,我需要将每行中的两列(即E31:F31,E40:F40)复制到Word中的书签中,然后打印出来。

  1. 我需要循环我的脚本,从X行到Y或X次。 excel数据库格式不正确。我设法将粘贴和打印应用于自定义数量的单元格,但我得到“它使用的文档是否要打开临时副本”错误可能是因为我尝试一次完成所有操作。
  2. 复制的文字显示在Word中,两个单词之间存在较大差距(来自columen E和F),我该如何解决?

    Sub Copy_Excel_Cell_to_Word_Form()

    Dim wdApp As Object 'Word.Application
    Dim wdDoc As Object 'Word.Document
    
    For i = 31 To 60
    
        'Open new instance of Microsoft Word
        Set wdApp = CreateObject("Word.Application")
        'Make application visible
        'wdApp.Visible = False
        'Open the word document
        Set wdDoc = wdApp.Documents.Open("\\example.doc")
        'Copy value
        Worksheets(1).Range("E" & i, "F" & i).Copy
        'Paste to word document
        wdDoc.Bookmarks("WORKER").Range.PasteAndFormat (wdFormatPlainText)
        wdDoc.PrintOut
    
    Next
    

    End Sub

1 个答案:

答案 0 :(得分:0)

关于你的第二点,试试这个:

声明一个名为workerName的字符串变量。而不是Worksheets(1).Range("E" & i, "F" & i).Copy使用

workerName = Worksheets(1).Cells(i,5).Value 'e = 5
workerName = workerName & " " & Worksheets(1).Cells(i,6).Value & vbCr 'f = 6

而不是使用wdDoc.Bookmarks("WORKER").Range.PasteAndFormat (wdFormatPlainText)使用

wdDoc.Bookmarks("WORKER").Range.Text = workerName

这应该可以消除很大的差距。