|
本帖最后由 413191246se 于 2011-10-22 12:55 编辑
针对最近有 3 例多有朋友问怎么把一些文字每行转换为表格行的问题,论坛内 sylun 大侠、高手、朋友(也许还是版主吧,我是新手,不太清楚)已经用精湛的技艺奉献了核心代码,我在此基础上,添枝加叶,形成一个可以广大朋友共享的一个宏功能:文本行转表格行,以方便广大 WORD 使用者。不是太完美,因为原来每个段落的第一行(首行),转换后,最好是“首行缩进”2字符后才能与原来的段落样式相仿,但段落的首行怎么判断,我不清楚。但这个宏的代码已经达到了实用的目的,请使用者自己录制一个宏,然后复制以下宏代码即可:
' 文本行转表格行(Word 2003 VBA)
' 消息框提问
If MsgBox("请将所有文本行转表格行的文字复制到一个新文档后使用本宏,准备好了吗?", vbYesNo + vbExclamation, "文本行转表格行") = vbNo Then End
' 全选
Selection.WholeStory
' 每行末加软回车符(代码编写:sylun)
With Selection
Do
.MoveStart wdLine, wdExtend
If .Previous Like "[!" & Chr(11) & "-" & Chr(13) & "]" Then .InsertBefore Chr(11)
.Start = .Start + 1
Loop Until .Type = wdSelectionIP
End With
' 全选
Selection.WholeStory
' 全选,文本转换为表格,以制表符分隔
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=1, _
NumRows:=9, AutoFitBehavior:=wdAutoFitFixed
With Selection.Tables(1)
.Style = "网格型"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
Selection.MoveLeft Unit:=wdCharacter, Count:=1
' 删除表格最后一行(空行)
Selection.Tables(1).Rows.Last.Delete
' 表格两端是否开口(要不要边框)
If MsgBox("表格两端要表格线吗?", vbYesNo + vbExclamation, "表格边框") = vbYes Then End
Selection.Tables(1).Select
Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
Selection.MoveLeft Unit:=wdCharacter, Count:=1 |
|