很多时候,我们需要把导入的数据某一列转换成超链接,比如URL形式的列。
那么,大批量的情况下,无疑一个个手动点击是非常愚蠢的办法,这个时候我们就需要VBA编程来编写宏,通过编写宏来简化这些手动操作并不现实的操作。
下面,直接上源码,并说明如何启用宏,VBA编程,并固化宏
一、
一系列网址或文件路径快速转换为可点击的超链接的VBA源码 activateHyperlinks
Sub activateHyperlinks() 'Updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
Dim xTitleId As String
On Error Resume Next
xTitleId = "toolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
If WorkRng Is Nothing Then Exit Sub '如果用户取消选择,则退出子程序
For Each Rng In WorkRng
Application.ActiveSheet.Hyperlinks.Add Anchor:=Rng, Address:=Rng.Value
Next Rng
End Sub
二、
如何开始VBA(Visual Basic for Applications)编程
excel的版本众多,但其实版本是无所谓的,应该是94版本之后的都可以支持VBA编程了
那什么是VBA编程呢?
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,特别适用于Excel、Word、PPT等Office软件中,用户可以通过编写VBA代码来自动化日常任务,提高工作效率,说简单点,也就是word,excel这些软件都支持VBA,这个是一种宏语言,也可以想象成脚本语言
那么,宏的来源是两种,第一种是录制宏,也就是自己的操作录制为宏脚本并保存,第二种就是自行编写宏脚本,本案例就是自行编写宏脚本
通常,excel默认是关闭宏开发功能的,并且默认也是禁止宏运行的,那么,如何开启宏编程也就是VBA编程呢?
以excel2016为例,选择文件,选项
进入选项菜单后,选择自定义功能区,勾选开发工具即可
此时,选项栏将会多出一个开发工具选项,里面有宏录制
这个时候的excel文件需要另存为带excel宏模板形式,后缀为xlsm这样的文件形式
保存后的excel文件图标也会变的和普通的文件不一样,带了一个白色感叹号,如下图一样:
🆗,那么,我们写好的宏在哪里管理呢?
ALT+F11快捷键或者如下图所示打开VBA编辑器界面就可以看到所有现有的编写好的宏了,这些宏不需要CTL+S 保存,都是自动保存的
这里查看也可以,并且这里是运行宏的入口:
那么,其他的excel文件是可以共用编辑好的宏的,但需要注意,使用前,需要把宏运行权限开启:
数字签署的宏这里我是不太明白的,懒人方法就是选择启用所有宏,然后此台电脑上的所有excel都可以调用所写的宏了,必须有一个带感叹号的excel文件哦,也就是xlsm后缀的文件,并且该文件是打开状态,否则是看不到宏的,也就是说带有宏的文件必须是打开状态
记住一点就可以了,宏是本台电脑所有的excel文件共享的,在其他普通的excel文件里,也是可以修改宏,编辑宏的,也就是VBA编程,作用范围是本台电脑
例如,打开一个普通的excel文件,此时选择宏这个选项会看到引用自22.xlsm 文件:
三、
activateHyperlinks宏的语句解析
下面是对这段代码的详细解释:
当然,以下是修改后代码的详细解释,包括每个部分的作用和为什么要进行这些修改:
Sub activateHyperlinks() 'Updateby Extendoffice | |
' 声明变量 | |
Dim Rng As Range ' 用于遍历指定范围内的每个单元格 | |
Dim WorkRng As Range ' 用于存储用户选择的范围 | |
Dim xTitleId As String ' 用于存储输入框的标题 | |
' 错误处理:如果发生错误,则继续执行下一行代码 | |
On Error Resume Next | |
' 初始化标题变量 | |
xTitleId = "toolsforExcel" | |
' 尝试将当前选中的区域赋值给WorkRng | |
Set WorkRng = Application.Selection | |
' 弹出一个输入框,允许用户选择一个范围 | |
' 标题是xTitleId的值,初始显示的是WorkRng的地址(如果已选择范围) | |
' Type:=8指定输入框返回的是一个Range对象 在VBA(Visual Basic for Applications)中, 除了
重要的是要注意, 此外,还需要注意的是, 在实际应用中,应根据需要选择合适的 | |
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) | |
' 如果用户取消选择(即WorkRng为Nothing),则退出子程序 | |
If WorkRng Is Nothing Then Exit Sub | |
' 遍历WorkRng范围内的每个单元格 | |
For Each Rng In WorkRng | |
' 在每个单元格中创建一个超链接 | |
' Anchor:=Rng指定超链接的锚点是当前遍历到的单元格 | |
' Address:=Rng.Value指定超链接的目标地址是单元格的内容 | |
Application.ActiveSheet.Hyperlinks.Add Anchor:=Rng, Address:=Rng.Value | |
Next Rng | |
' 子程序结束 | |
End Sub |
代码修改说明:
- 变量声明:
- 添加了
Dim xTitleId As String
来声明xTitleId
变量,确保它在使用前已被正确声明。
- 添加了
- 错误处理:
- 保留了
On Error Resume Next
,这意味着如果遇到运行时错误,VBA将不会显示错误消息框,而是继续执行下一行代码。然而,需要注意的是,这可能会隐藏潜在的问题,因此在实际应用中应谨慎使用。
- 保留了
- 用户输入处理:
- 使用
Application.InputBox
弹出一个输入框,允许用户选择一个范围。如果用户取消选择(即点击“取消”按钮或关闭输入框),则WorkRng
将变为Nothing
。 - 添加了
If WorkRng Is Nothing Then Exit Sub
来检查用户是否取消了选择。如果是,则立即退出子程序,避免后续代码出现错误。
- 使用
- 超链接创建:
- 在遍历
WorkRng
范围内的每个单元格时,使用Application.ActiveSheet.Hyperlinks.Add
方法创建超链接。 - 明确了
Anchor
参数为当前遍历到的单元格(Rng
),Address
参数为单元格的内容(Rng.Value
)。
- 在遍历
- 代码清晰性:
- 添加了注释来解释每个代码块的作用,提高代码的可读性和可维护性。
通过这些修改,代码现在更加健壮、清晰,并且能够更好地处理用户输入和潜在的错误情况。
🆗,VBA(Visual Basic for Applications)的初步学习就先到这里了,后面有新的内容在更新