【问题标题】:Remove last paragraph mark on header with vba使用 vba 删除标题上的最后一个段落标记
【发布时间】:2019-01-30 15:24:35
【问题描述】:

我想删除标题的最后一行。我目前在标题中有 2 行:我复制粘贴的第一行和复制粘贴之前的第二行(复制粘贴的起点)。

我尝试过类似的方法:

`Selection.Sections(1).Headers(1).Range.MoveEnd Unit:=wdCharacter, Count:=-1`

`Documents.Open (strFilename)
Selection.Sections(1).Headers(1).Range.Copy
ThisDocument.Activate
Selection.Sections(1).Headers(1).Range.Paste
Documents(strFilename).Close (0)`

预计只有一行,我从另一个文档复制粘贴的那一行 只需一行就可以为标题增加一点空间。

好的,这里有一张图片可以更好地理解我的问题:

希望有所帮助!

【问题讨论】:

  • 这个问题还不清楚...如果你把你想要的和你实际得到的截屏?请记住,您可以使用问题下方的edit 链接来添加/更改信息。
  • 我用图片编辑了我的问题,但 macropod 理解了我的问题,并且一切都按我的意愿工作。感谢您的帮助。

标签: vba ms-word header


【解决方案1】:

假设带有您要复制的标题的文档处于活动状态并且宏在该文档中:

Sub Demo()
Application.ScreenUpdating = False
Dim DocSrc As Document, DocTgt As Document
Set DocSrc = ActiveDocument
Set DocTgt = ActiveWindow.Next.Document
With DocTgt.Sections(1).Headers(1).Range
  .FormattedText = DocSrc.Sections(1).Headers(1).Range.FormattedText
  .Characters.Last.Previous = vbNullString
End With
Application.ScreenUpdating = True
End Sub

【讨论】:

  • 谢谢。它运作良好。我刚刚添加了这一行:Selection.Sections(1).Headers(1).Range.Characters.Last.Previous = vbNullString,一切都按我的意愿工作。
  • @JLuc01 使用选择非常低效,不需要复制/粘贴。我的代码演示了这两个原则。
  • 好的。但是,缩写 Tgt 是什么意思(我想 Src=Source,Tgt?)?在我的代码中,我打开一个文件并使用它的内容。在您的代码中,我看不到您是如何做到的。关于选择位,我同意你的观点,但我仍然试图了解如何正确地做到这一点:需要更多阅读它(到目前为止,我看到的代码向我展示了不同的方法,我有点困惑)。
  • @JLuc01 好吧,正如 Dim DocSrc As Document、DocTgt As Document、DocSrc & DocTgt 所指的文档。这些名称还指示哪个是哪个 - 源 (Src) 和目标 (Tgt)。我可以使用任何名称(例如 QWERTY 和 ZXCVB)来代替。 Set DocSrc = ActiveDocument 表示您的活动文档作为源,而 Set DocTgt = ActiveWindow.Next.Document 表示您的其他文档作为目标(或目标,如果您愿意)。还要注意,激活后者没有必要浪费资源。
  • 我想我设法做到了。我摆脱了选择和复制/粘贴。代码看起来更干净(抱歉,我无法在此评论中向您展示)。再次感谢@macropod。
【解决方案2】:

我不确定我是否理解你的意思,但我认为你正在寻找的是以下内容,试试吧

`Selection.Sections(1).Headers(1).Range.MoveEnd Unit:=wdCharacter, Count:=-1`

`Documents.Open (strFilename)
    Dim strText() As String
    Dim MyCell As String

    ThisDocument.Activate
    MyCell = Selection.Sections(1).Headers(1).Range.Text
    strText = Split(MyCell , vbCrLf)
    Selection.Sections(1).Headers(1).Range.Text=strText(0)
    Documents(strFilename).Close (0)


`

【讨论】:

  • 我在“值”处收到错误,我不太了解您的代码。无论如何,谢谢你,请参阅下面的帖子以获得对我有用的答案。
  • 用 .text 代替 .value 试试看,如果有效,请告诉我,如果有效,我会向您解释我的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2013-02-22
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
相关资源
最近更新 更多