VBA(Visual Basic for Applications)编程|excel|一系列网址或文件路径快速转换为可点击的超链接

很多时候,我们需要把导入的数据某一列转换成超链接,比如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)中,Application.InputBox方法的Type参数用于指定返回值的类型。Type:=8是其中一个选项,它允许用户选择一个单元格区域,并返回一个Range对象。

除了Type:=8之外,Type参数还可以接受其他几个值或值的组合,以指定不同类型的输入。以下是一些常见的Type值及其含义:

  1. 0:返回文本形式的公式。如果输入的单元格中包含公式,该公式将以文本形式返回,而不是计算结果。例如,如果单元格A1包含公式=2+3,则使用Type:=0时,返回的是字符串"=2+3"
  2. 1:允许输入数字。这将使InputBox对话框接受数字输入,并返回输入的数字值。
  3. 2:允许输入文本。这是默认值,使对话框接受任意文本输入。
  4. 数字组合:可以通过将上述数字相加来指定多种类型的输入。例如,Type:=3(即0+1+2,但通常直接写为3)允许输入文本和数字。需要注意的是,虽然组合值可以包含0(公式),但在实际应用中,通常不会将公式与文本或数字组合输入,因为这会导致类型不匹配的问题。

重要的是要注意,Type参数的值决定了InputBox方法返回值的类型。如果指定了错误的类型,或者用户输入的内容与指定的类型不匹配,可能会导致运行时错误或返回意外的结果。

此外,还需要注意的是,Application.InputBox与VBA中的内置InputBox函数有所不同。Application.InputBox提供了更多的功能和选项,包括指定返回类型的Type参数。而内置的InputBox函数则较为简单,主要用于获取用户的文本输入,并返回一个字符串值。

在实际应用中,应根据需要选择合适的Type值来确保InputBox对话框能够正确地接受和处理用户输入。

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

代码修改说明:

  1. 变量声明:
    • 添加了Dim xTitleId As String来声明xTitleId变量,确保它在使用前已被正确声明。
  2. 错误处理:
    • 保留了On Error Resume Next,这意味着如果遇到运行时错误,VBA将不会显示错误消息框,而是继续执行下一行代码。然而,需要注意的是,这可能会隐藏潜在的问题,因此在实际应用中应谨慎使用。
  3. 用户输入处理:
    • 使用Application.InputBox弹出一个输入框,允许用户选择一个范围。如果用户取消选择(即点击“取消”按钮或关闭输入框),则WorkRng将变为Nothing
    • 添加了If WorkRng Is Nothing Then Exit Sub来检查用户是否取消了选择。如果是,则立即退出子程序,避免后续代码出现错误。
  4. 超链接创建:
    • 在遍历WorkRng范围内的每个单元格时,使用Application.ActiveSheet.Hyperlinks.Add方法创建超链接。
    • 明确了Anchor参数为当前遍历到的单元格(Rng),Address参数为单元格的内容(Rng.Value)。
  5. 代码清晰性:
    • 添加了注释来解释每个代码块的作用,提高代码的可读性和可维护性。

通过这些修改,代码现在更加健壮、清晰,并且能够更好地处理用户输入和潜在的错误情况。

🆗,VBA(Visual Basic for Applications)的初步学习就先到这里了,后面有新的内容在更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序开发全解析 快速构建高效应用的核心指南

内容概要 小程序开发是当前数字世界中炙手可热的领域,吸引了无数开发者和企业的关注。随着技术的进步,小程序成为了提升用户体验、增强品牌曝光以及增加客户互动的重要工具。了解小程序的基本概念,就像是打开了一扇通往新世界的大门。 在这…

SQL—Group_Concat函数用法详解

SQL—Group_Concat函数用法详解 在LC遇见的一道很有趣的SQL题,有用到这个函数,就借这道题抛砖引玉,在此讲解一下group_concat函数的用法。🤣 GROUP_CONCAT([DISTINCT] expression [ORDER BY expression] [SEPARATOR separator])…

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力,通过多层防御机制,如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等,有效抵御各种网络攻击,包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等,保障网站和应…

流光效果

1、流光效果是什么 在 Unity Shader 中的流光效果是一种动态的视觉效果,通常用于给材质增加一种闪光或光线移动的效果,使物体表面看起来像是有光在流动。这种效果常用于武器光效、能量护盾、传送门等等,可以让物体看起来更加生动富有科技感 …

滑动窗口——串联所有单词的子串

一.题目描述 30. 串联所有单词的子串 - 力扣(LeetCode) 二.题目解析 题目前提:s是一个字符串,words是一个字符串数组,里面所有的字符串的长度都是相等的。 题目要求:找到s中的一段连续的子串&#xff0…

【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级

模型参数规模泄露:理解大型语言模型的参数量级 关键词: #大型语言模型 Large Language Model #参数规模 Parameter Scale #GPT-4o #GPT-4o-mini #Claude 3.5 Sonnet 具体实例与推演 近日,微软在一篇医学相关论文中意外泄露了OpenAI及Claud…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时,我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,现在我们就撸一把构建元素中插件的用法。 一、…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成,现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

finereport动态数据源插件教程2

场景: 模板中有多个数据集,只需要其中一个数据集按照不同的参数显示不同数据库的数据。 模板制作: 两个数据集ds1,ds2,ds1的绑定到参数面板的下拉框上,ds2显示到模板正文中,现在需要ds1根据不同…

Java通过谷歌邮箱Gmail直接发送邮件的三种方式

错误 Connected to the target VM, address: 127.0.0.1:52082, transport: socketException in thread "main" javax.mail.MessagingException: Got bad greeting from SMTP host: smtp.gmail.com, port: 587, response: [EOF] at com.sun.mail.smtp.SMTPTransp…

WSDM 2025 | 时间序列(time series)论文总结

AWSDM 2025于2025年3月10号到14号在德国汉诺威举行(Hannover, Germany) 本文总结了WSDM 2024有关时间序列(time series)的相关论文,如有疏漏,欢迎大家补充。(没有时空数据相关的论文&#xff0…

反直觉导致卡关-迫击炮谜题

这个谜题,在两周目中先后卡了我至少三个小时,先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久,稀里糊涂的过了,想不到二周目还会卡那么久。 研究了很多播主的攻略,但还是一头雾水, 直到分析其…

庐山派K230学习日记4 PWM控制

1 本节介绍​ 📝本节您将学习如何通过将K230开发板的GPIO引脚复用为PWM功能并输出PWM信号;实现输出PWM信号及控制板载无源蜂鸣器发出声音。 🏆学习目标 1️⃣如何将GPIO引脚配置为PWM模式,通过40Pin排针中的部分引脚来输出PWM信号…

c语言的文件操作与文件缓冲区

目录 C语言文件操作函数汇总 简单介绍文件 为什么使用文件 什么是文件 文件名 二进制文件和文本文件 流和标准流 流 标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 文件的随机读写 fseek ftell rewind 文件读取结束的判定 文件缓冲区 缓…

嵌入式linux中socket控制与实现

一、概述 1、首先网络,一看到这个词,我们就会想到IP地址和端口号,那IP地址和端口各有什么作用呢? (1)IP地址如身份证一样,是标识的电脑的,一台电脑只有一个IP地址。 (2)端口提供了一种访问通道,服务器一般都是通过知名端口号来识别某个服务。例如,对于每个TCP/IP实…

Nginx:动静分离

什么是动静分离? 动静分离 是指将网站中的静态资源(如图片、样式表、脚本等)和动态内容(如 PHP、Python、Node.js 等后端生成的内容)分开部署和处理。这样做的好处是可以利用不同的服务器或缓存策略来优化不同类型的资源。 动静分离的好处 提高性能:静态资源可以直接从…

PADS Layout 差分线设计规则及其设计规则约束的详细过程步骤

一般我们的电路板有很多的差分线,有90欧姆的差分线,也有100欧姆的差分线,90欧姆的差分线主要是针对USB的差分线,特别是对于USB HUB的板子,那么我们就要设置差分线。一般我们设置差分线,一般要切换到Router里面来设置,如下所示: 那么设置差分对,一般要对原理图和Router…

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

概述(讲讲python基本语法和第三方库)

我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…