ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

文档页快速选取待完善

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-2-4 16:23 | 显示全部楼层 |阅读模式

经常遇到当文档页码很多时找到某一页很麻烦,所以用VBA编了一个小程序。目的是快速翻到所需要的页。先将doc文件另存为dot模板,然后加载到C:\Documents and Settings\Username\Application Data\Microsoft\Word\STARTUP下才能正常使用。

还有一点问题没有解决,当打开第二个文档时,任何动作都会导致菜单栏的闪动。

请守柔斑竹帮助看一下。

bh8Q8G2W.rar (12.88 KB, 下载次数: 37)

TA的精华主题

TA的得分主题

发表于 2005-2-4 21:47 | 显示全部楼层

不错

我觉得快速切换到相应的页,用定位比较方便

TA的精华主题

TA的得分主题

发表于 2005-2-5 07:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

对于BUTTON兄的大作,守柔自然不敢怠慢,只是最近较忙,可能需要一点时间(也不一定能胜任)。

另外,单从目的而言,使用F5定位功能(CTRL+G),也很方便。

工具栏做得真不错!

TA的精华主题

TA的得分主题

发表于 2005-2-5 07:56 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-5 10:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以前没涉及WORD的VBA编程,这是第一次,还请各位多指教。

TA的精华主题

TA的得分主题

发表于 2005-2-10 15:13 | 显示全部楼层

y6Y2Fq3y.zip (17.87 KB, 下载次数: 20)

有两个问题,未能解决!

一是切换到另一个窗口时,工具栏的闪动;

二是不知为何,切换到另一窗口时,COMBOX的值有问题,见 ObjChange过程。

我与BUTTON用的是两种方法(但大同小异),希望有空交流一下。

代码如下:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-2-10 15:12:51 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [标准模块-模块1]^' '* -----------------------------

Public objComb As CommandBarComboBox, SelPageItem As Integer Dim X As New EventClassModule Sub AutoExec() Set X.App = Word.Application SelPageItem = Selection.Information(wdActiveEndPageNumber) AddPsBar End Sub '---------------------- Sub AddPsBar() '添加菜单 Dim SelPageBar As CommandBar, cmdToStart As CommandBarButton, cmdPreview As CommandBarButton Dim cmdNext As CommandBarButton, cmdToEnd As CommandBarButton Dim cmdAbout As CommandBarButton, cmdClose As CommandBarButton On Error Resume Next ' Application.CustomizationContext = ActiveDocument Application.CommandBars("Page_Select").Delete Set SelPageBar = Application.CommandBars.Add(Name:="Page_Select", Position:=msoBarTop, Temporary:=True) Set cmdToStart = SelPageBar.Controls.Add(Before:=1) With cmdToStart .Caption = "第一页" .FaceId = 154 .BeginGroup = True .OnAction = "GoToSelPage" End With Set cmdPreview = SelPageBar.Controls.Add(Before:=2) With cmdPreview .Caption = "上一页" .FaceId = 155 .OnAction = "GoToSelPage" End With Set objComb = SelPageBar.Controls.Add(Type:=msoControlComboBox, ID:=1, Before:=3) With objComb .Width = 70 .Style = msoComboLabel ShowPages .OnAction = "ObjChange" End With Set cmdNext = SelPageBar.Controls.Add(Before:=4) With cmdNext .Caption = "下一页" .FaceId = 156 .BeginGroup = True .OnAction = "GoToSelPage" End With Set cmdToEnd = SelPageBar.Controls.Add(Type:=msoControlButton, Before:=5) With cmdToEnd .Caption = "最后一页" .FaceId = 157 .OnAction = "GoToSelPage" End With Set cmdAbout = SelPageBar.Controls.Add(Type:=msoControlButton, Before:=6) With cmdAbout .Caption = "关于" .FaceId = 984 .BeginGroup = True .OnAction = "GoToSelPage" End With Set cmdClose = SelPageBar.Controls.Add(Type:=msoControlButton, Before:=7) With cmdClose .Caption = "关闭" .FaceId = 840 .BeginGroup = True .OnAction = "GoToSelPage" End With SelPageBar.Visible = True ShowPages End Sub '---------------------- Sub GoToSelPage() ' ShowPages With Selection Select Case Application.CommandBars.ActionControl.Caption Case "第一页" .GoTo wdGoToPage, , , 1 Case "上一页" .GoToPrevious wdGoToPage Case "下一页" .GoToNext wdGoToPage Case "最后一页" .GoTo wdGoToPage, , , .Information(wdNumberOfPagesInDocument) Case "关于" MsgBox "Product of Button" & Chr(13) & Chr(13) _ & "欢迎使用快速选择指定页工具!" & Chr(13) _ & "请多多指正!" & Chr(13) & Chr(13) _ & "作者:Button" & Chr(13) _ & "Version:Demo" & Chr(13) _ & "发布日期:2004-6", vbOKOnly, "Free Tools for Excel—Page Select" Case "关闭" On Error Resume Next Application.CommandBars("Page_Select").Delete End Select End With End Sub '---------------------- Sub ShowPages() '在COMBOX显示页码 On Error Resume Next Dim PageItem As Integer Application.ScreenUpdating = False With objComb .Clear For PageItem = 1 To Selection.Information(wdNumberOfPagesInDocument) .AddItem "第 " & PageItem & " 页", PageItem Next PageItem .ListIndex = Selection.Information(wdActiveEndPageNumber) End With Application.ScreenUpdating = True End Sub '---------------------- Sub ObjChange() Dim ItemPage As Integer, ObjText As String, I As Integer, N As Integer On Error Resume Next If objComb.Text = "" Then Exit Sub ObjText = objComb.Text MsgBox ObjText & "ObjText"'此处有问题!即变化窗口后的值没有及时改变! If ObjText Like "第 #* 页" = True Then ItemPage = Mid(ObjText, 2, Len(ObjText) - 2) * 1 MsgBox ItemPage & "第" ElseIf ObjText Like "#*" = True Then For I = 1 To Len(ObjText) If Asc(Mid(ObjText, I, 1)) < 48 Or Asc(Mid(ObjText, I, 1)) > 57 Then N = N + 1 Next If N > 0 Then MsgBox "无效数据", vbExclamation, "Warnning!" Else ItemPage = ObjText * 1 If ItemPage > Selection.Information(wdNumberOfPagesInDocument) Then _ MsgBox "无效数据", vbExclamation, "Warnning!": Exit Sub End If End If Selection.GoTo wdGoToPage, , , ItemPage End Sub '----------------------

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-2-10 15:13:08 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [类模块-EventClassModule]^' '* -----------------------------

Public WithEvents App As Word.Application Private Sub App_WindowSelectionChange(ByVal Sel As Selection) If Sel.Information(wdActiveEndPageNumber) <> SelPageItem Then ShowPages SelPageItem = Sel.Information(wdActiveEndPageNumber) End If End Sub '---------------------- Private Sub App_DocumentChange() ShowPages End Sub '----------------------

TA的精华主题

TA的得分主题

发表于 2005-2-10 15:20 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-11 01:29 | 显示全部楼层

to 守柔斑竹:

就是切换时闪动的问题,作成DLL加载宏也没有解决。

并且我研究了一下,就是在对COMBOBOX中写值时出现该问题的。

[此贴子已经被作者于2005-2-11 1:31:37编辑过]

TA的精华主题

TA的得分主题

发表于 2005-2-11 10:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用button在2005-2-11 1:29:00的发言:

to 守柔斑竹:

就是切换时闪动的问题,作成DLL加载宏也没有解决。

并且我研究了一下,就是在对COMBOBOX中写值时出现该问题的。

同一文档中的写值过程,工具栏并不闪动。

如我的代码中的:WindowSelectionChange事件中也是写值,但不闪动,如果发生App_DocumentChange事件,有时闪动,有时不闪动,纳闷!

所以,我试过保存于模板中的代码还是不行。另外,我当初还考虑直接写入normaltemplate中可能还要简单一些,不需要类模块,直接使用autoopen事件,感觉也有上述问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-11 12:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我遇到的是同样的问题。不论是否使用类模块,代码运行的原理是一致的,因此问题也是一样的。

我在想其它的解决办法。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-14 15:10 , Processed in 0.038033 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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