分享
 
 
 

office 办公软件中利用VBA(Visual Basic for Application)宏

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

office 办公软件中利用VBA(Visual Basic for Application)宏

唐铁鑫

谈到宏,很多人想到的是宏病毒,其实如果有正版杀毒软件,打开了实时防护,设置好宏安全性,可以利用宏来完成许多办公自动化功能。

打开word软件,从文件主菜单中“工具”->“宏”->“安全性”,设置安全性为中,这样就可以选择执行宏。安装office的时候,应该定制安装,在“office 工具”里选上“Visual Basic帮助”,这样就能获得非常完善的关于VBA编程环境、VBA语言参考、VBA对象等的帮助文档。从“工具”->“宏”->“Visual Basic 编辑器”可以打开VBA编程环境——“Microsoft Visual Basic”。在编程环境中打开“帮助”->“Microsoft Visual Basic帮助”,就可以看到帮助了。

很多人觉得学习Visual Basic没有用,事实上,Visual Basic系列的编程语言包括VB、VBA、VBScript等,可以写网页、办公自动化编程、应用编程。在一些其他公司的应用软件中也是可以用VBA的,例如Corel Draw。这里举几个例子来说明VBA的使用。

如果有数十个文档需要合并为一个文档,逐个打开、拷贝是件麻烦事,可以用宏来完成。

例一:合并文档。新建一个窗体,窗体上放一个按钮。工具箱可以从“视图”->“工具箱”打开。

'按钮事件

Private Sub CommandButton1_Click()

Dim sPath As String 'sPath用来保存路径

Dim tem As String '中间变量

Set newDoc = Documents.Add '用Documents.Add增加一个新文档

With newDoc

.SaveAs FileName:="D:/txtal.doc" '新文档保存的完整路径

End With

ActiveDocument.close '关闭新建的文档

With Dialogs(wdDialogFileFind) '设置文本查找对话框

.SortBy = 2 '文件按名称排列

.SearchName = "*.txt" '只列出文本文件

.Update '更新

End With

If Dialogs(wdDialogFileFind).Show = -1 Then '如果按下打开,就执行

sPath = Dialogs(wdDialogFileFind).SearchPath '将查找对话框打开的路径附值给SPath

Dialogs(wdDialogFileFind).Execute

Else

Exit Sub '如果取消或者关闭,就退出

End If

With Application.FileSearch '设置应用程序的查找

.NewSearch '新查找

.LookIn = sPath '将新查找的路径设置为文件对话框的路径(sPath)

.SearchSubFolders = True '查找子目录

.FileType = msoFileTypeAllFiles '查找所有文件类型,这里可以设置其他类型,具体见FileSearch对象的FileType属性

.FileName = "*.txt" '查找后缀为txt的文件

.Execute '执行文件查找

Documents.Open ("D:/txtal.doc") '打开"D:/txtal.doc"

Set Range2 = ActiveDocument.Content '设置Range2对象为活动文档的内容

For i = 1 To .FoundFiles.Count '把找到的文件打开,拷贝文件内容,加到新建的D:/txtal.doc文件中

Documents.Open (.FoundFiles(i)) '打开第i个找到的文件

ActiveDocument.Content.Select '全选活动文件的内容

Selection.Copy '拷贝选中的内容

ActiveDocument.Close '关闭活动文档

Range2.Collapse Direction:=wdCollapseEnd '设置粘贴位置为Range2的最后

Range2.Paste '将拷贝的内容粘贴到Range2

Next i

ActiveDocument.Save '保存活动文档

ActiveDocument.Close '关闭活动文档

End With

End Sub

如果有大量的word文档需要修改某个术语或者什么固定的语句,逐一打开是件麻烦事,利用宏可以很很快完成这项任务,而且不会错漏。对例一修改一下就可以完成这个任务。

例二:全文查找替换。

Private Sub CommandButton1_Click()

Dim sPath As String

With Dialogs(wdDialogFileFind) '设置文本查找对话框

.SortBy = 2 '文件按名称排列

.SearchName = "*.doc" '只列出*.doc文件

.Update '更新

End With

If Dialogs(wdDialogFileFind).Show = -1 Then '如果按下打开,就执行

sPath = Dialogs(wdDialogFileFind).SearchPath '将查找对话框打开的路径附值给SPath

Dialogs(wdDialogFileFind).Execute

Else

Exit Sub '如果取消或者关闭,就退出

End If

With Application.FileSearch

.NewSearch

.LookIn = sPath

.SearchSubFolders = True

.FileType = msoFileTypeWordDocuments '查找文件类型为word文档

.Execute

For i = 1 To .FoundFiles.Count

Documents.Open (.FoundFiles(i))

ActiveDocument.Select

With Dialogs(wdDialogEditReplace)

On Error GoTo Err

.Find = TextBox1.Text

.Replace = TextBox2.Text

.ReplaceAll = True

.Execute

End With

ActiveDocument.Save

ActiveDocument.Close

Next i

End With

Err:

If TextBox1.Text = "" Then

ActiveDocument.Save

ActiveDocument.Close

End If

MsgBox "请输入替换查找的字串"

End Sub

Exel中我没找到将行变列、列变行的功能,于是写了个宏。

例三:在Exel中将行变成列。在Exel中从“工具”->“宏”->“Visual Basic 编辑器”打开编程环境,通过“插入”->“模块”,建立宏。

Sub change() 'change宏

Dim row(0 To 20, 0 To 20) As String '定义一个21*21的二维数组

Range("A1").Select '选定A1单元格

For i = 0 To 20

For j = 0 To 20

row(i, j) = ActiveCell.Offset(i, j).Value '把A1位移(i,j)个单元格的单元格的内容依次附值给数组row(i,j)

Next j

Next i

Range("A1").Select

On Error GoTo err

For i = 0 To 20

For j = 0 To 20

ActiveCell.Offset(i, j).Value = row(j, i) ''把数组row(j,i)的内容依次附值给A1位移(i,j)个单元格的单元格

Next j

Next i

Exit Sub

err:

MsgBox Error

End Sub

netscaner@sina.com.cn

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有