2010-08-15 71 views
0

我对MS Office Word 2007文档有一个简单的要求。我需要宏的代码,它复制一个Table(格式化的),并在每次运行此宏时粘贴它。Microsoft Word 2007复制表格宏

该场景如下: - 1.我将复制一个格式化的表(7-8行和5-6列等),并将其存储在宏中作为按钮或快捷键。

1.无论何时我想要或在同一个单词文档中的任何特定位置,我会放置光标并单击宏按钮(运行我们的宏)。这个宏应该粘贴具有相同数量的行和列以及样式的相同格式的表格。

2.我可以运行这个宏几次,但它应该每次粘贴相同的表。

我希望代码将在VB中。

我知道如何创建宏,分配按钮,快捷键,安全性等。我只需要背后宏的VB代码(或任何代码),这可能是以上情况的解决方案。

对不起,但我已经让我的要求非常清楚。

在此先感谢...干杯!希尔帕丝绸

+0

看起来你之前问过这个问题。 http://stackoverflow.com/questions/3486324/copy-table-macro-for-ms-word-2007 试一试吧,当你遇到麻烦时问一个更具体的问题。 – buckbova 2010-08-15 18:34:50

+0

我试了一下,但没有成功。我以为我贴错了标签的问题,并没有得到任何答复。所以,回到这里:)任何帮助将不胜感激! /Shilpa Silk – 2010-08-15 19:24:33

+0

您可以编辑自己的标签 - 将其作为http://stackoverflow.com/questions/3486324/copy-table-macro-for-ms-word-2007的完全副本关闭此标签。但是,对于那种相当直接的评论 - 大多数人不会为你编写解决方案。马吉德一直非常友善,竭尽全力为你提供很多细节。你可能应该使用他给你的东西,并自己制定解决方案的其余部分,并接受他的答案。 – 2010-08-15 23:00:27

回答

2

使用宏记录器。调用记录器,然后完成复制和粘贴表格的步骤,然后您可以对其进行编辑以查看宏的实际指令。但请注意,宏记录器不保存剪贴板的内容,因此创建表的标记将不会与宏一起保存。为了让它工作,在运行宏之前表格应该存在。

这是一个可行的方法:

开始录制下列条件应满足之前:

  1. 你的表应该是在 开始文档的 段落标记后
  2. 你的光标应该是 你想放置新的地方 表

然后打开记录并完成以下步骤:

  1. _table_goes_here_类型,其中 光标是
  2. 按CTRL + HOME主表之前转到文档(年初刚刚
  3. 按住Shift并按down arrow键足够多的时间,直到选中 整个表,
  4. 按Ctrl + C复制表
  5. 按Ctrl + F,弹出查找对话框
  6. 类型的占位符文本查找内容框中(_table_goes_here_) ,点击查找下一个
  7. 当你有你的占位符文本中找到和选择,按Esc 键关闭查找对话框
  8. 按Ctrl + V粘贴复制的表格,将替换您的 占位符文本
  9. 结束宏录制。

编辑 - 第二条本办法
另一种方法是开始录制宏,然后从头开始创建表,这样你就不会需要一个已经存在的表为宏工作。当您对表格结束记录进行整形和格式化时,您已经捕获了所有需要的步骤,以便将所需的表格放在任意位置。

我刚刚测试了第二种方法,它工作得很好。这里是记录器为我的小测试生成的代码:

Sub MakeTable() 
' 
' MakeTable Macro 
' Macro recorded þ16þ/08þ/2010 by Majid Fouladpour 
' 
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=4, NumColumns:= _ 
     4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ 
     wdAutoFitFixed 
    With Selection.Tables(1) 
     If .Style <> "Table Grid" Then 
      .Style = "Table Grid" 
     End If 
     .ApplyStyleHeadingRows = True 
     .ApplyStyleLastRow = True 
     .ApplyStyleFirstColumn = True 
     .ApplyStyleLastColumn = True 
    End With 
    With Selection.Tables(1) 
     .Style = "Table Columns 4" 
     .ApplyStyleHeadingRows = True 
     .ApplyStyleLastRow = True 
     .ApplyStyleFirstColumn = True 
     .ApplyStyleLastColumn = True 
    End With 
    Selection.TypeText Text:="Col one" 
    Selection.MoveRight Unit:=wdCharacter, Count:=1 
    Selection.TypeText Text:="Col two" 
    Selection.MoveRight Unit:=wdCharacter, Count:=1 
    Selection.TypeText Text:="Col three" 
    Selection.MoveRight Unit:=wdCharacter, Count:=1 
    Selection.TypeText Text:="Col four" 
    Selection.MoveDown Unit:=wdLine, Count:=1 
    Selection.MoveLeft Unit:=wdCharacter, Count:=3 
    Selection.TypeText Text:="Item 1" 
    Selection.MoveDown Unit:=wdLine, Count:=1 
    Selection.TypeText Text:="Item 2" 
    Selection.MoveDown Unit:=wdLine, Count:=1 
    Selection.TypeText Text:="Item 3" 
End Sub 
+0

嗨Majid! 感谢您回答这个问题,但我的要求非常不同。我不能将表格放在文档的开头,而是在某个特定的页面中放置表格。是不是有一种方式让宏应该记住表格并随时随地粘贴它。可以使用相同的宏将表格粘贴到其他文档中。有(在新文档中)我不能告诉任何人在文档的开头复制粘贴表格。不能宏存储和保存表格和格式在其内存或类似的东西?我可以随时在任何word文档中重新使用它。 感谢您的帮助 – 2010-08-15 19:21:13

+0

宏将粘贴放置光标的表格,而不是在文档的开头。文档开始处的表格仅用作模板。你也可以把它放在文档的末尾,在这种情况下,而不是'Ctrl + Home',你需要做一个'Ctrl + End',然后向后移动以在录制宏时选择表格。我不知道任何方式来保存表格本身,但会编辑我的答案添加另一种方法。 – 2010-08-15 19:31:45

+0

您可以将该表存储为自动图文集词条(或Word 2007中的构建块)。这样它就会随文档一起保存,但在运行代码插入之前不会出现在页面上。 – e100 2010-08-16 08:55:55