ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求助版主:如何用VBA将书签名在窗体的列表框中列表?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-1-17 15:15 | 显示全部楼层 |阅读模式

如何用VBA将同目录下的“样本文档.doc”的书签名在窗体的列表框中列表?

9vcf0j0E.rar (8.36 KB, 下载次数: 56)

TA的精华主题

TA的得分主题

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

请参:

'* +++++++++++++++++++++++++++++++++++++++

'* Created By I Love You_Word!@ExcelHome 2005-1-17 16:44:39

'仅测试于System: Windows NT Word: 10.0 Language: 2052

'^The Code CopyIn [用户窗体-UserForm1]^'

'* --------------------------------------------------------------------------

Private Sub CommandButton2_Click() On Error Resume Next Unload Me Documents(ThisDocument.AttachedTemplate.Path & "\样本文档.doc").Close False End Sub '---------------------- Private Sub UserForm_Initialize() Dim BK As Bookmark, Doc As Document Set Doc = Documents.Open(FileName:=ThisDocument.AttachedTemplate.Path & "\样本文档.doc", _ Visible:=False) If Doc.Bookmarks.Count < 1 Then Me.ComboBox1.Text = "未发现书签!" Else For Each BK In Doc.Bookmarks Me.ComboBox1.AddItem BK.Name Next End If Me.ComboBox1.ListIndex = 0 End Sub '---------------------- Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Documents(ThisDocument.AttachedTemplate.Path & "\样本文档.doc").Close False End Sub '----------------------
你可以加添加按钮删除之,只留下关闭就可以了,其实关闭按钮也可以不用。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-17 18:58 | 显示全部楼层

测试通过,增加点难度

测试通过,增加点难度(别见笑,自己认为的):

1、如要列表的是含有某个字符的,如含有“sg”的所有书签呢?不含“sg”的不列表……

2、亦可在上述基础上对列表框处理,即列表框中输入字符后,如果有此字符,重新列表,没有则依然是全部,就象下面这个附件所示的功能一样:

求助版主:如何用VBA将书签名在窗体的列表框中列表?

求助版主:如何用VBA将书签名在窗体的列表框中列表?

TA的精华主题

TA的得分主题

发表于 2005-1-17 19:27 | 显示全部楼层
我非常希望楼主把自己想要做的事情想一想清楚,理一理顺当。不要芝麻开花,节节高。其实很简单,但我还是希望楼主把要求达到的目的考虑更为成熟一些。

TA的精华主题

TA的得分主题

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

只能想到这了,原以为列表框能实现这一功能,谁知她只列表,不会随输入自动改变。

由于现在的编程在初始阶段大多为可视化编程,我才有机会进行尝试,又遇到热心的版主您,更增加了我学习的积极性,随着您的解答,新的想法也在不断涌现,这在以前是不曾有过的。

现在,每天不到这个论坛来总觉得少了些什么,再次谢谢您……

TA的精华主题

TA的得分主题

发表于 2005-1-17 20:23 | 显示全部楼层

hao123,你的想法都是不错的想法,不过跟经常编程的人想的不同,你的想法都是从使用方便便捷的角度考虑,觉得程序是能做任何事情的,事实确实是这样,可以完成,不过,许多看似很简单很正常的东西,要编出来要费一番思考,所以你前面说的那些功能确实很正常,但是要实现确实要思考设计一番,所以守柔斑竹让你把你的想法要想明白后再要求.

这到让我不由想到和领导的交流来了,领导是不懂编程的,但是比较有思想,即想让软件这样,有想让软件那样,每次和他讨论他的想法都在变,有时候自己的思路都没理清,就让工具来实现,我简直都快晕死了:)

不知谁还有同感?

[em06]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-17 20:33 | 显示全部楼层

理解!支持,给版主添麻烦了,致歉!不过我不是领导,*^_^*[em31]

谢谢大家的关心和支持……

很希望今天晚上把这个问题弄清楚,然后向版主交一份作业……

期待……

TA的精华主题

TA的得分主题

发表于 2005-1-18 06:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用hao123在2005-1-17 20:33:00的发言:

理解!支持,给版主添麻烦了,致歉!不过我不是领导,*^_^*[em31]

谢谢大家的关心和支持……

很希望今天晚上把这个问题弄清楚,然后向版主交一份作业……

期待……

以下代码供参考:

'* +++++++++++++++++++++++++++++++++++++++

'* Created By I Love You_Word!@ExcelHome 2005-1-18 07:06:50

'仅测试于System: Windows NT Word: 10.0 Language: 2052

'^The Code CopyIn [用户窗体-UserForm1]^'

'* --------------------------------------------------------------------------

Dim Doc As Document, BK As Bookmark, TF As Boolean Private Sub ComboBox1_Change() End Sub '---------------------- Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim N As Integer On Error Resume Next If TF = True Then Exit Sub '如果发生了关闭窗体则此事件不发生 If ComboBox1.Text <> "" Then '如果组合框输入有文本 Me.ComboBox1.AddItem ComboBox1.Text '自动添加到组合框中 Me.ListBox1.Clear '清空列表框 For Each BK In Doc.Bookmarks '在指定的文档书签中循环 If InStr(BK.Name, ComboBox1.Text) > 0 Then '找到与之相近的书签 N = N + 1 '计数 Me.ListBox1.AddItem BK.Name '并添加到列表框中 End If Next If N = 0 Then '如果没有找到相近的书签 For Each BK In Doc.Bookmarks '循环全部书签写入列表框中 Me.ListBox1.AddItem BK.Name Next End If Else '如果是空,则清空列表框 Me.ListBox1.Clear End If End Sub '---------------------- Private Sub UserForm_Initialize() '打开指定的文档 Set Doc = Documents.Open(FileName:=ThisDocument.AttachedTemplate.Path & "\样本文档.doc", _ Visible:=False) If Doc.Bookmarks.Count < 1 Then '如果没有书签则提示 MsgBox "未发现书签!", vbOKOnly + vbInformation Else For Each BK In Doc.Bookmarks Me.ListBox1.AddItem BK.Name '在列表框中列出所有书签名 Next End If Me.ListBox1.ListIndex = 0 '选中第一项 End Sub '---------------------- Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) On Error Resume Next TF = True '赋值于TF变最 '关闭指定文档 Doc.Close False End Sub '----------------------
cwGXTAtk.zip (12.88 KB, 下载次数: 56)

操作说明:

将附件替换到你原来与“样本文档.DOC"同一文件夹下,打开或者新建该模板(启动.DOT),点按钮"将书签列表",出现一个窗体,其中的列表框中列出所有的指定的"样本文档.DOC"中的书签名;

你可以在上面的组合框中输入任意名称,如包含的某几个字符,然后回车,则该组合框中会自动将你的输入进行添加,如果书签中包含你的输入字符,列表框中会自动重新列表;如果没有该字符,列表框会还原成全部的书签名.

如果你需要对列表框项目进行运行时间内的排序,可以使用SORTED属性;如果你需要动态随时改变列表框中的项目,可以使用

Private Sub ComboBox1_Change() End Sub 此事件,但我个人以为用EXIT事件也许更好。

好了,有什么问题,再交流.

[此贴子已经被作者于2005-1-18 7:09:57编辑过]

zwUHlMUc.rar

10.74 KB, 下载次数: 63

求助版主:如何用VBA将书签名在窗体的列表框中列表?

TA的精华主题

TA的得分主题

发表于 2005-1-18 08:35 | 显示全部楼层

cmyy 说得有理啊!

其实很多人在考虑实现某个功能的时候,都缺乏一种系统的、整体的思维,不但给自己开发带来麻烦,也给别人的理解带来麻烦,所以软件工程学还是应该多少了解一点的。

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

本版积分规则

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

GMT+8, 2024-11-15 12:58 , Processed in 0.044531 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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