VBA笔记——可快速回忆或入门

最近闲来无事,学了点VBA。今天来分享一下。
虽然现在都用python,但是还是有很多朋友因为各种原因必须要用到VBA,所以入个门还是不亏的~
本文全是干货,跳过了什么if else,do while的内容。可快速上手开发

基础

VBA分sub和function。function有返回值,但是sub没有返回值。

声明变量

sub 笔记()

Dim 变量名 as 变量类型  '除了dim,还可以用 private ,public ,static

END sub

可以用一个语句同时声明多个变量

Dim 变量1 as 变量类型, 变量2 as 变量类型   '无论变量类型是否相同都要分别指明变量类型

可以用变量声明符声明变量类型
在这里插入图片描述
如:

Dim str$ '定义一个字符串(string)类型变量str
variant类型

variant类型是变体型,就是什么类型数据都可以存放

实际应用

其实就是我自己做过的内容啦
不是实际案例,但是是我理解之后,感觉会比较好懂的形式写出来的。

VBA操作文件

sub 操作文件()

dim path1 as string
dim path2 as string
dim filename as string

path1=某某路径
path2=某某某路径
filename=你想操作的文件名(全面,加上文件类型如123.txt)

copyfile path1 & "\" & filename,path2 & "\" & filename   'copyfile(很直观的名字,复制文件)旧路径+文件名,(逗号重点是这个逗号)新路径+新文件名
kill path & "\" & filename    '删除你想删除的文件
dim fso as object
dim mytxt as object
fso = createobject("scripting.filesystemobject")
mytxt =fso.createtxtfile(filename,True)			'创建名为filename的文件

if len(Dir(path1 & filename))>0 then		'判断文件是否存在,也可以写成判断dir(文件)是否为空
'你的操作
else
'你的操作
end if
if Dir(path1,vbDirectory)<>"" then
msgbox "该文件夹/目录已经存在!"
else 
MKDir (path1) 		’创建一个文件夹/目录
end if

name path1 & filename as path2 & filename			'name可以给文件重命名,当前后路径不同时,可将文件移动并重命名
end sub

emmm
操作文件差不多就这些,我还不是大佬,只是一个入了门的小白,暂时先分享这么多。随时更新。
后面看一些我自己用到的别的功能

操作cmd命令/.bat文件

不多说,上代码

sub myshell()

dim myshell1 as object
dim myshell2 as object

set myshell1 = createobject("wscript.shell")
set myshell2=myshell1.exec("cmd.exe /c" & "你的cmd命令")			‘这是在VBA中写cmd命令的方法,exec()括号中可以写变量,也就是你的代码可以是动态的。"cmd.exe /c"是打开cmd窗口。
shell ("你的.bat文件")			‘直接调用你写好的.bat文件(跟上一行代码没关系,这是另一种用法。但这种用法cmd命令是死的)

end sub

操作网页

额,,,,这个比较复杂,我本人也还是不是很懂,只是会一丢丢。

参考
https://www.cnblogs.com/dazuo/p/4898170.html

打开网页

Sub sample()

 Dim objIE As InternetExplorer

 'IE(InternetExplorer)对象的创建
 Set objIE = CreateObject("InternetExplorer.Application")

  'IE(InternetExplorer)显示
  objIE.Visible = True

  '显示指定的URL
  objIE.Navigate "http://www.vba-ie.net/"

 '在网页完全加载完成之前等待
 Do While objIE.Busy = True Or objIE.ReadyState <> 4
  DoEvents
 Loop

End Sub

不得不说,这个大佬的注释写的是真到位!

点击网页中的按钮

参考这个:
Excel VBA对网页的操作
http://club.excelhome.net/thread-1489382-1-1.html
(出处: ExcelHome技术论坛)

Sub sample()

 Dim objIE As object

 objIE.document.getElementById("F12看一下你要操作的按钮的id").click
 objIE.document.getElementById("F12看一下你要操作的文本框的id").Value = "你想输入的内容"
 
 '上面是通过网页中元素的ID进行判断,同理也可以通过元素的TagName进行判断
 objIE.document.getElementByTagName("F12看一下你要操作的按钮的TagName").click
 objIE.document.getElementByobjIE.document.getElementByTagName("F12看一下你要操作的文本框的TagName").Value = "你想输入的内容"("F12看一下你要操作的文本框的id").Value = "你想输入的内容"

'经验有限,只能简单列举这两种。有的网页设计既没有ID也没有TagName,那就只能通过识别是第几个元素来判断了(这是我搜的,不对的话可以评论告诉我,灰常感谢!),就是自己一个一个查。

end sub

因为研究有限,网页部分写的不全。例如根据VBA(excel)版本不同或者计算机运算位数不同(64位,32位)打开窗口的前提条件(权限?)不同,具体参考我第二个给的URL中的大佬写的第一行代码。

msgbox的运用

这个贼简单

sub mymsgbox()

msgbox ("你想提示的文本",你想设定的按钮,窗口标题,帮助,context不知道怎么用)		'除了文本其它都是可选项
'一个简单的运用

if msgbox ("你是否要进行下一步?",vbOKCancel,"提示") = vbOK Then
'下一步操作
else
exit sub
end if
msgbox "你学费了吗?"

end sub

关于button的设定有很多样式,详细可以参考下面的网址
msgbox函数详解—office官网

关闭屏幕更新

为了避免在代码执行时,屏幕频繁更新(比如频繁切换文件或者sheet页这种看着贼烦还容易卡的情况),我们可以通过ScreenUpdating来控制屏幕更新

sub 屏幕更新()

你的代码
Application.ScreenUpdating = False		'关闭屏幕更新

让你频繁屏幕更新的代码

Application.ScreenUpdating = True		'开启屏幕更新

你的代码的执行结果只会当你的代码执行到Application.ScreenUpdating = True的时候才会显示结果。

暂时先写这么多,以后再完善更新~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值