ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何设置一个Range,等于第一页全部内容?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 12:46 | 显示全部楼层
sylun 发表于 2019-7-6 11:25
楼主如是想学习研究,可查看一下VBA对各个预定义书签的解释。文档最后一个标记是文档结束标记,有特殊作用 ...

感谢sylun老师的指点!

官方文档中确实提到了:
如果插入点或所选内容位于文档中的最后一页,则“\Page”书签不包含文档结尾的段落标记。
0.png

但是因为在实际操作中,是有可能会把一个Shape对象定位在文末。而这个Shape对象的锚点应该是在最后的段落标记之前吧?不知为何不能选中。。

我的目的还是要能同时选中这个文末的Shape对象~

TA的精华主题

TA的得分主题

发表于 2019-7-6 13:32 | 显示全部楼层
xiaoyouxi01 发表于 2019-7-6 12:46
感谢sylun老师的指点!

官方文档中确实提到了:

你为何要选中它?你的最终目的是什么?可试试如下代码,看看图形是否包括在内(插入点在首页)
  1. Documents.Add.Content.FormattedText = ActiveDocument.Bookmarks("\Page").Range.FormattedText
复制代码

TA的精华主题

TA的得分主题

发表于 2019-7-6 13:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
杜老师、loquat老师、sylun老师 都参与了! 根据 sylun 老师的看法,我对跨页表格的认识是,放弃表格,只取表格上方文字范围,楼主 请试试:
  1. Sub 选定第一页()
  2.     With ActiveDocument
  3.         If .Content.Information(wdActiveEndPageNumber) = 1 Then '只有1页
  4.             .Select
  5.         Else
  6.             With Selection
  7.                 .GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2" '转到第2页
  8.                 .MoveEnd 1, -1 '回退一个字符
  9.                 If .Information(12) Then
  10.                     .Tables(1).Range.Previous.Select '选择表格上方字符
  11.                     ActiveDocument.Range(0, .End).Select
  12.                 Else
  13.                     ActiveDocument.Range(0, .End + 1).Select
  14.                 End If
  15.             End With
  16.         End If
  17.     End With
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 13:52 | 显示全部楼层
本帖最后由 xiaoyouxi01 于 2019-7-6 13:56 编辑
sylun 发表于 2019-7-6 13:32
你为何要选中它?你的最终目的是什么?可试试如下代码,看看图形是否包括在内(插入点在首页)

我的最终目的是,对首页这个Range的内容进行后续操作,包括图形在内。
我并不一定要选中它,只要获取Range就可以。用Select是为了测试Range是否正确。。


我试了你这句代码,图形确实包含在里面了~

然后我又试了.Bookmarks("\Page").Range这个Range居然已经包含了文末的Shape对象了!

但是.Bookmarks("\Page").Range.Select却不会选中这个Shape对象。。

这倒奇怪了。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 14:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2019-7-6 13:41
杜老师、loquat老师、sylun老师 都参与了! 根据 sylun 老师的看法,我对跨页表格的认识是,放弃表格,只取 ...

我用上面10楼的两种方案,都可以正常选择第一页的表格部分。。
9.png

这里我不太明白,不知什么情况,跨页表格会出现问题?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 14:24 | 显示全部楼层
测试发现,10楼代码的方案一,还是有问题。。

如果仅1页,最后一段是空行,没有图形,此时也选不中最后一行。

方案二可以选中。

TA的精华主题

TA的得分主题

发表于 2019-7-6 14:34 | 显示全部楼层
xiaoyouxi01 发表于 2019-7-6 13:52
我的最终目的是,对首页这个Range的内容进行后续操作,包括图形在内。
我并不一定要选中它,只要获取Ran ...

可看看如下代码的结果,再修改锚点的锁定位置看看
  1. Sub test()
  2.     With ActiveDocument.Content
  3.         .Characters.Last.Select
  4.         Debug.Print .ShapeRange(1).Anchor.Start & vbTab & .ShapeRange(1).Anchor.End
  5.         Debug.Print .Characters.Last.Start & vbTab & .Characters.Last.End
  6.     End With
  7. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 14:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 xiaoyouxi01 于 2019-7-6 14:50 编辑
sylun 发表于 2019-7-6 14:34
可看看如下代码的结果,再修改锚点的锁定位置看看

我测试了这段代码,页末的shape会选中;输出结果是
501 502
501 503

Debug.Print .Characters.Last = vbCr
结果为True

Debug.Print Len(.Characters.Last)
结果为1

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-6 16:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
目前我觉得最好的解决方案还是这个:

  1. Function GetFirstPage() As Range
  2.     With ActiveDocument
  3.         If .ComputeStatistics(wdStatisticPages) = 1 Then
  4.             Set GetFirstPage = .Content
  5.         Else
  6.             Set GetFirstPage = .Range(0, .GoTo(wdGoToPage, wdGoToAbsolute, 2).Start)
  7.         End If
  8.     End With
  9. End Function
复制代码


做成一个Function,返回Range,不会改变光标位置,后续要不要Select都可以,要Select也能完全选中。
  1. Sub test()
  2.     Dim r As Range
  3.     Set r = GetFirstPage
  4.     r.Select
  5. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2019-7-6 22:19 | 显示全部楼层
xiaoyouxi01 发表于 2019-7-6 10:27
loquat老师的这个函数很好!把页数参数化了,可以选任意页。

但是我有个问题,在计算lngEnd时,为什么 ...

可能是我记错了
或者是软件版本的问题,刚才试了一下,好像都不需要-1....
但是需要更多测试。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 07:37 , Processed in 0.025578 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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