ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 倒序排列段落

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-25 08:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在粘贴网上的某些文字直播的时候,网页不提供倒序或顺序的排列。
粘贴到WORD,采用什么方法可以实现按原文档的倒序排列所有的段落。 倒序排列段落.rar (14.57 KB, 下载次数: 44)

TA的精华主题

TA的得分主题

发表于 2012-2-25 09:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
试试?Sub invertedOrderPara()
    With ActiveDocument
        For i = .Paragraphs.Count To 1 Step -1
            .Content.InsertAfter .Paragraphs(i).Range
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2012-2-25 11:01 | 显示全部楼层
附件没看.有兴趣可以试一下这个:
Sub DescSortParagraphs()
    Dim objData As New MSForms.DataObject
    Dim strCopy As String
    Dim astrPara() As String
    Dim astrNewPara() As String
    Dim L As Long
    Dim N As Long
    On Error Resume Next
    objData.GetFromClipboard
    strCopy = objData.GetText(1)
    If Len(strCopy) > 0 Then    ''''成功取得剪贴板中的数据
        astrPara = Split(strCopy, vbCrLf)   ''''分隔符视具体情况而定
        For L = UBound(astrPara) To 0 Step -1
            If Len(astrPara(L)) > 0 Then    ''''删除空行
                ReDim Preserve astrNewPara(0 To N)
                astrNewPara(N) = astrPara(L)
                N = N + 1
            End If
        Next
    End If
    If N > 0 Then ActiveDocument.Content.Text = Join(astrNewPara, Chr$(13))
End Sub
如果不会修改代码,请先剪切文档中的内容至剪贴板后运行本代码.如果会修改,可以视网页内容中的换行标记在剪贴板中的具体ASC值,从而可以直接处理.

TA的精华主题

TA的得分主题

发表于 2012-2-25 11:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2012-2-25 11:19 编辑

2楼提供的代码真的管事儿(原代码未声明变量,加上一下)!谢谢!为了清晰,我加上一些星号(原文档倒序排列段落后的结果存在星号下面):

Sub 倒序排列段落()
    Selection.EndKey Unit:=wdStory
    Selection.TypeText Text:=vbCr & "***********************"
    Dim i As Long
    With ActiveDocument
        For i = .Paragraphs.Count To 1 Step -1
            .Content.InsertAfter .Paragraphs(i).Range
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2012-2-25 11:22 | 显示全部楼层
本帖最后由 413191246se 于 2012-2-25 11:27 编辑

守版的代码提示“用户定义类型未定义”,我也不会定义,谢谢守版百忙之中提供代码,但太高深了,看不明白(现在我特别喜欢vbcr比喜欢chr(13)甚,因为省了三个字符)。另外,楼主的原文看着时间是按顺序排列的,为什么还要倒序排列呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-25 11:42 | 显示全部楼层
个别网站提供的排序是倒序的,不提供顺序,附件为临时示例文件。
谢谢各位朋友的热心帮助。另外,我也试着用域{seq a}输入编号,然后对域进行排序,但总有几个域编号并没有按照规定顺序排列,这种情况不知道有没有朋友遇到过。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-25 12:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
根据网友“kqbt”提供方法“关于 段落倒排序 ,我的做法是:
1、先在文档中插入自动序号域{ seq a},切换代码得到 1 ,将该域剪切至剪贴板;
2、打开替换功能,将 *[^12^13]  替换为 ^c^& ,使每个段落前都加入自动序号域,F9更新文档之后段落就序号就排好了;
3、打开表格菜单中的排序对话框,将 段落数 按 数字 来 降序 重排,就实现了;
4、最后根据需要用替换功能来批量删除 自动序号域 即可。”
有少量段落会有乱序,不知道是操作不当,还是另有原因,请知情的网友进来指导一下。

TA的精华主题

TA的得分主题

发表于 2012-2-25 19:24 | 显示全部楼层
狂晕!楼主第8楼的代码,变量未定义!怎么执行?以后记得要定义变量呀!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-25 17:52 | 显示全部楼层
Sub invertedOrderPara()
Dim Str As String
With ActiveDocument
    For i = .Paragraphs.Count To 1 Step -1
        Str = Str & Chr(13) & .Paragraphs(i).Range
    Next
End With
Documents.Add
ActiveDocument.Content.Text = Str

End Sub

TA的精华主题

TA的得分主题

发表于 2012-4-19 15:55 | 显示全部楼层
gl_zhangt 发表于 2012-2-25 09:08
试试?Sub invertedOrderPara()
    With ActiveDocument
        For i = .Paragraphs.Count To 1 Step  ...

这是倒序的做法,如果我想做成段落乱序怎样改这代码呀?
就是说我把文章排成乱七八糟的,呵呵
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-19 17:56 , Processed in 0.042598 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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