ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9803|回复: 4

[分享] 文本行转表格行(全文每行文字转为表格的一行)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-22 12:35 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 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

TA的精华主题

TA的得分主题

发表于 2011-10-22 20:24 | 显示全部楼层
收下了,谢谢!!!!!!!!!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 12:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    为了进一步方便操作,我设想用户可能会把当前活动文档中的一些段落选中,可能是连续的段落,也可能是分开的段落。假设用户用鼠标选定了一些段落,这些段落应该就是 Selection 或 Range 了,但怎么把它定义一下,经过在这些选定的段落每行后面加上软回车后,再重新选中这些用户曾经选择过的段落呢? 我不会定义 Range 范围,请高手来解答!——这样的话,在用户选择过的段落每行末尾加上软回车后,再重新选择这些段落(有可能是连续的,也可能是分开的——即使假设这些段落是连续的,以利文本转换为表格的操作),直接以制表符为分隔,进行文本转表格的操作,就大大方便了,不必再将要操作的内容复制到一个新文档中了!——还有一个问题,用户选择的这些段落,怎么给每段的首行做个标记,或设置某种颜色,等全部操作完毕后,给这些做了标记的每段首行再设置一下“首行缩进2字符”,就达到完美了!

TA的精华主题

TA的得分主题

发表于 2012-5-29 07:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-8-27 21:25 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-15 21:51 , Processed in 0.019130 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表