【问题标题】:Opening a word doc from excel, print a selection and a string on the same page从 excel 打开 word doc,在同一页面上打印选择和字符串
【发布时间】:2016-12-13 07:55:30
【问题描述】:

我有一个包含 word 文档的数据库。文件名如 000001、000002……

我已经成功编写了一个宏来打开这些文档,进行选择直到找到一个值,打印这个选择然后再次关闭文档并继续下一个。 (见下面的代码)

有一件事我想做额外的,但我想不通。我希望在此选择下(在同一页面上)打印“结束”一词。但我想在不更改文档的情况下做到这一点。

我不想更改文档,因为需要与选择一起打印的值来自用户表单文本框,并且每次都不同。但是如果有人可以帮助我,你可以举个例子,用结束这个词

在我正在寻找的东西上方添加了一张图片

这是我现在的代码:

Dim i As Long, wdApp As Object, wdDoc As Object, wdRng As Object
Set wdApp = CreateObject("Word.Application")
With wdApp
  .Visible = True
  For i = 1 To 9
    Set wdDoc = .Documents.Open("\\path\" & Format(i, "000000") & ".NET", False, True, False)
With wdDoc
  Set wdRng = .Range(0, 0)
  With .Range
    With .Find
      .Text = "ENDLIST"
      .Forward = True
      .MatchWholeWord = True
      .MatchCase = True
      .Execute
    End With
    If .Find.found = True Then
      wdRng.End = .Duplicate.Start
      wdRng.Select
      wdDoc.PrintOut , Range:=1
    End If
  End With
  .Close False
End With
  Next
  .Quit
End With
Set wdRng = Nothing: Set wdDoc = Nothing: Set wdApp = Nothing

End Sub

这可能吗,如果可以,请有人帮我去

【问题讨论】:

  • 首先想到的是添加页脚,打印,然后删除页脚。
  • 这听起来确实可行,我会尝试找到类似的东西。我会让你知道我是否可以让它工作
  • 我发现了以下内容,但我不确定如何将其处理到我的代码中,有人有什么想法吗? stackoverflow.com/questions/5550959/…
  • 我已经设法在我的代码中添加了页脚。但是,因为我在代码中打印了一个选择,所以没有打印页脚。
  • 如果不保存就关闭文档,为什么不能更改?

标签: excel vba


【解决方案1】:

我自己发现的。下面的代码将打开word文件,在doc的开头添加信息,从头开始选择,直到找到一个词,打印这个选择然后再次关闭word文件。

选择后无法弄清楚如何获取它,如问题图片所示。但这个地方并不重要,只要需要的信息在纸上并且看起来很整洁。

Sub test()


Dim i As Long, wdApp As Object, wdDoc As Object, wdRng As Object, wRng As Object
Dim BEGINNING_OF_STORY
Dim MOVE_SELECTION

BEGINNING_OF_STORY = 6

MOVE_SELECTION = 0

Set wdApp = CreateObject("Word.Application")
With wdApp
  .Visible = True
  For i = 1 To 2
    Set wdDoc = .Documents.Open("M:\" & Format(i, "000") & ".docx")
    With .Selection
    .Font.Bold = True
    .HomeKey BEGINNING_OF_STORY, MOVE_SELECTION
    .Font.Size = "25"
    .TypeText ("information" & vbCrLf)
    End With
    With wdDoc
      Set wdRng = .Range(0, 0)
      With .Range
        With .Find
          .Text = "DEF"
          .Forward = True
          .MatchWholeWord = True
          .MatchCase = True
          .Execute
        End With
        If .Find.found = True Then
          wdRng.End = .Duplicate.Start
          wdRng.Select
          wdDoc.PrintOut , Range:=1
        End If
      End With
      .Close False
    End With
  Next
  .Quit
End With
Set wdRng = Nothing: Set wdDoc = Nothing: Set wdApp = Nothing

End Sub

符合我自己的需要,希望其他人有时也可以使用它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2017-07-31
    相关资源
    最近更新 更多