
配置一个数据源或自己创建链接
Function ConnectionAs400(serverName As String, userid As String, password As String, ccsid As Long, libl As String) As Object'创建ADODB AS400连接
Dim conn As Object
On Error GoTo ErrorConnHandler
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "IBMDA400" '驱动名称 IBMDA400 功能最全但不支持SQL的事务 IBMDASQL 仅支持SQL(支持事务),IBMDARLA 不支持块访存
conn.Properties("Library List") = libl '初始化目录
conn.Properties("Naming Convention") = 1 '命名约定,0:*SQL 1:*SYS
'conn.Properties("Force Translate") = 65535
conn.Properties("Force Translate") = ccsid '强制转换 缺省值为 65535,表示不执行转换 值为 0 则使用作业的CCSID执行转换 '836,935,937,1388,4932,4933,5484,9028
conn.Properties("Query Storage Limit") = -1 '查询存储限制 -1表示无限制
conn.Properties("Use SQL Packages") = False '使用 SQL 程序包
conn.Properties("Convert Date Time To Char") = "False" '将日期时间转换为字符型
conn.Properties("Data Source") = serverName
conn.Properties("User ID") = userid
conn.Properties("Password") = password
conn.Open
'conn.Open "Provider=IBMDA400Data Source=Deve.inah.hk.hsbcUser ID=HLIPGRP01"
Set ConnectionAs400 = conn
Debug.Print conn.Properties("Job Name")
Exit Function
ErrorConnHandler:
MsgBox ("连接AS400失败:" + CStr(err.Number))
Dim ErrorMsg As Object
For Each ErrorMsg In conn.Errors
MsgBox (ErrorMsg.Description)
Next
End Function
Function clsConnection(conn As Object) As Boolean
'关闭ADODB AS400连接
clsConnection = True
On Error GoTo ErrorCloseHandler
If Not conn Is Nothing Then
conn.Close
End If
Set conn = Nothing
Exit Function
ErrorCloseHandler:
首先在工具 引用 中引入ADO组件(全名叫Microsoft ActiveX Data什么的,很好好找),然后声明一个连接变量 conn as ADODB.Connetion用来连接数据库,这里需要连接字符串,不知道你是什么类型数据库,所以连接字符串无法给出,再声明一个数据集变量ds as ADODB. DATASET用于执行SQL语句并返回结果集,得到结果集之后就可以访问里面的内容了1、汉字在前,数字在后面的情形。可以用MID,min, find三个函数来实现提取里面的数字。如图:在B2输入“=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&“0123456789”)),20)”
2 、把单元格里面所有的数字都提出来。可以使用宏。先打开VBA编辑器。工具——宏——visual basic 编辑器
3、在编辑器里点击插入——模块。在模块那里输入如下代码:
Function zzsz(xStr As String) As StringDim i As IntegerFor i = 1 To Len(xStr)If IsNumeric(Mid(xStr, i, 1)) Then zzsz = zzsz &Mid(xStr, i, 1)NextEnd Function
4、回到工作表,在B2单元格那里输入“=zzsz(A2)”。就可以用VBA把A2单元格里所有的数字都提取出来了,如图所示。
Excel怎么只提取表格中的数字
5、指定从第几个数组提取开始。也就是说在不连续的那些数字中,从第几次出现的数组开始提取。同样在模块那里输入如下代码:
Function GetNums(rCell As Range, num As Integer) As StringDim Arr1() As String, Arr2() As StringDim chr As String, Str As StringDim i As Integer, j As IntegerOn Error GoTo line1
Str = rCell.TextFor i = 1 To Len(Str)chr = Mid(Str, i, 1)If (Asc(chr) 《 48 Or Asc(chr) 》 57) ThenStr = Replace(Str, chr, “ ”)End IfNext
Arr1 = Split(Trim(Str))ReDim Arr2(UBound(Arr1))For i = 0 To UBound(Arr1)If Arr1(i) 《》 “” ThenArr2(j) = Arr1(i)j = j + 1End IfNext
GetNums = IIf(num 《= j, Arr2(num - 1), “”)line1:End Function
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)