常用功能加载宏——单元格数据连接
时间:2022-07-22
本文章向大家介绍常用功能加载宏——单元格数据连接,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经常用Excel的人,应该会经常需要把Excel里的数据复制到Word等其他软件中,复制过去经常会碰上格式上的问题。
还有时候需要复制一小块单元格区域,可是复制过去可能就是一个表格,或者是被Tab符号分隔开的内容,并不是真正需要的:
默认从Excel中复制的数据,(如果是复制到Word这类支持表格的软件,会复制表格过去,这个时候还可以进一步转换为文本),列与列之间是使用Tab连接,上一行与下一行是使用换行符连接。
如果列之间的连接符Tab和行之间的连接符换行符可以自定义就好了,那么,我们来实现这么一个复制的功能:
首先在customUI.xml中增加代码:
<box id="boxCopy" boxStyle="vertical" visible="true">
<editBox id="rbtxtRowChar" label="行连接字符:" imageMso="OutlineWeightGallery" keytip="R" sizeString="123456" onChange="rbtxtRowChar_onChange" getText="rbtxtRowChar_getText"/>
<editBox id="rbtxtColChar" label="列连接字符:" imageMso="TableHeight" keytip="C" sizeString="123456" onChange="rbtxtColChar_onChange" getText="rbtxtColChar_getText"/>
<button id="rbbtnCopyText" label="复制 " size="large" supertip="复制并连接单元格的Text。" onAction="rbbtnCopyText" imageMso="SizeToFit"/>
</box>
回调函数:
Sub rbtxtRowChar_getText(control As IRibbonControl, text)
text = "newline"
strRowChar = CheckChar(VBA.CStr(text))
End Sub
Sub rbtxtColChar_getText(control As IRibbonControl, text)
text = "、"
strColChar = CheckChar(VBA.CStr(text))
End Sub
Sub rbtxtRowChar_onChange(control As IRibbonControl, text As String)
strRowChar = CheckChar(text)
End Sub
Sub rbtxtColChar_onChange(control As IRibbonControl, text As String)
strColChar = CheckChar(text)
End Sub
Private Function CheckChar(text As String) As String
If VBA.LCase$(text) = "newline" Then
CheckChar = vbNewLine
Else
CheckChar = text
End If
End Function
Sub rbbtnCopyText(control As IRibbonControl)
MRange.CopyText strRowChar, strColChar
End Sub
因为我们要自定义列之间的连接符和行之间的连接符,所以需要在MRibbon模块顶部声明2个变量:
Private strRowChar As String
Private strColChar As String
因为换行符不大方便输入,所以设置了一个CheckChar函数,检查如果输入的是文本newline,就会把连接符替换为真正的换行符。
函数实现:
Sub CopyText(strRowChar As String, strColChar As String)
Dim rng As Range
Dim str As String
Dim iRow As Long, iCol As Long
Dim iRows As Long, iCols As Long
Dim arrCols() As String
Dim arrStr() As String
'确保选中的是单元格
If VBA.TypeName(Selection) = "Range" Then
Set rng = Selection
If rng.Cells.Count > 1 Then
'选择的单元格范围的行数
iRows = rng.Rows.Count
'选择的单元格范围的列数
iCols = rng.Columns.Count
'保存连接后每一行的内容
ReDim arrStr(iRows - 1) As String
'记录列单元格的Text
ReDim arrCols(iCols - 1) As String
For iRow = 0 To iRows - 1
For iCol = 0 To iCols - 1
'记录列单元格的Text,不使用Value属性的目的是因为很多时候Excel的数字会设置特殊格式
arrCols(iCol) = rng.Cells(iRow + 1, iCol + 1).text
Next
'将列单元格的Text连接起来,并存放到arrStr中
arrStr(iRow) = VBA.Join(arrCols, strColChar)
Next
'将连接后每一行的内容连接起来
str = VBA.Join(arrStr, strRowChar)
Else
str = VBA.CStr(rng.text)
End If
'复制文本到剪贴板
SetClipText str
End If
End Sub
SetClipText函数是一个比较常用的函数,所以可以放到VBAProject文件夹里的vbapFunc.xlam里,然后常用功能加载宏通过工具-引用来使用这个文件:
Sub SetClipText(str As String)
Dim objData As Object
Set objData = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With objData
.SetText str '设置文本
.PutInClipboard
End With
Set objData = Nothing
End Sub
- OpenStack与SDN控制器的集成
- 使用机器学习算法对流量分类的尝试——基于样本分类
- 曾经做过的40道程序设计课后习题总结(一)
- 基于ODL与Pica8交换机端到端的限速实验
- SpringBoot就是这么简单
- SpringData JPA就是这么简单
- Openflow细节理解之—Buffer_id篇
- 移动商城项目总结
- 移动商城第一篇【搭建项目环境+数据模型】
- 移动商城第二篇(品牌管理模块)【文件上传、数据校验、CRUD】
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法