VBS操作MS SQL Server2014和Excel

  最近在使用VRV统计WPS的安装率过程中,一直使用的是Excel VBA编程来操作的,每次操作还是麻烦,导出来以后,需要拷贝文件,然后执行宏。

  这些数据如果进入数据库就好了,要这样的话一般要使用VB、C#来做,可是我的计算机上已经好长时间都没有安装这些编辑软件了,再说,现在都不兴这些编程工具了。

  越简单越好,就使用VBS就可以做这些。缺点就是这个执行文件里有关键信息,不能给无关人员使用。

  昨天在虚拟机上安装好服务器和MS SQL Server 2014数据库。

  今天早上开始使用VBS编写代码来做同样的事情,先让Excel的记录进入MS SQL Server 2014的数据库。

  中间出了一些问题,很麻烦,开始使用记事本来写,出了错误不好定位;后来使用VS CODE来编写,可是出的问题更加不可思议;再使用EditPlus来编写,问题少了一些,可是还是有;最后还是使用记事本编写才完成。

  VBSCript远不如VBA和VB好用,但VBS功能很强大。

  建立数据库和数据表:

   完整代码:

dim currentPath
currentPath = createobject("Scripting.FileSystemObject").GetFolder(".").Path

dim T1,T2
dim excelObj
dim srcExcelBook
dim srcExcelSheet

T1 = now()
Set excelObj = CreateObject("Excel.Application")
Set srcExcelBook= excelObj.Workbooks.Open(currentPath+"\Device.xls")
set srcExcelSheet=excelObj.Worksheets("DeviceSearchLook_Export")
allEquipmentCount = srcExcelSheet.UsedRange.Rows.Count

dim conn
dim sConnStr
sConnStr="Driver={SQL server};server=IP地址;database=数据库名称;uid=用户名称;pwd=密码;"
set conn=WScript.CreateObject("ADODB.Connection")
conn.Open sConnStr
dim editRS
dim queryRS
dim sSQL
dim queryResult
set editRS =WScript.CreateObject("ADODB.Recordset")
set queryRS=WScript.CreateObject("ADODB.Recordset")

dim sMacAddr
dim sIP
dim netInfo
dim gatewayAddr
dim subnetMask
dim primaryDNS

dim secondaryDNS

dim operatingSystem
dim memorySize
dim harddiskSize
dim harddiskSerialNumber
dim cpuModel
dim userName
dim contactNumber
dim equipmentName
dim equipmentLocation
dim entryTime
dim otherSign
dim descriptiveText
dim sArr

entryTime=now()

for iFor=3 to 594
    sMacAddr =srcExcelSheet.Range("I" & ifor).Value
    sIP      =srcExcelSheet.Range("H" & ifor).Value
    netInfo  =srcExcelSheet.Range("AE" & ifor).Value
    operatingSystem=srcExcelSheet.Range("W" & ifor).Value
    memorySize=srcExcelSheet.Range("Z" & ifor).Value
    harddiskSize=srcExcelSheet.Range("AA" & ifor).Value
    harddiskSerialNumber=srcExcelSheet.Range("AB" & ifor).Value
    cpuModel=srcExcelSheet.Range("Y" & ifor).Value
    userName=srcExcelSheet.Range("E" & ifor).Value
    contactNumber=srcExcelSheet.Range("F" & ifor).Value
    equipmentName=srcExcelSheet.Range("G" & ifor).Value
    equipmentLocation=srcExcelSheet.Range("B" & ifor).Value

    sSQL="select count(*) from VRVEquipmentRecord where c02='" & sMacAddr & "' and c01='" & sIP & "'"
    queryRS.open sSQL,conn,1,1
    queryResult=queryRS(0)
    queryRS.close
    if queryResult=0 Then
        sArr=split(netInfo,",")
        i=instr(sArr(2),":")
        subnetMask=right(sArr(2),len(sArr(2)) - i)
        i=instr(sArr(3),":")
        gatewayAddr=right(sArr(3),len(sArr(3)) - i)
        i=instr(sArr(4),":")
        primaryDNS=right(sArr(4),len(sArr(4)) - i)
        i=instr(sArr(5),":")
        secondaryDNS=right(sArr(5),len(sArr(5)) - i)
        editRS.open "VRVEquipmentRecord",conn, 1,3
        editRS.addnew
        editRS("C01").Value=sIP
        editRS("C02").Value=sMacAddr
        editRS("C03").Value=gatewayAddr
        editRS("C04").Value=subnetMask
        editRS("C05").Value=primaryDNS
        editRS("C06").Value=secondaryDNS
        editRS("C07").Value=operatingSystem
        editRS("C08").Value=memorySize
        editRS("C09").Value=harddiskSize
        editRS("C10").Value=harddiskSerialNumber
        editRS("C11").Value=cpuModel
        editRS("C12").Value=userName
        editRS("C13").Value=contactNumber
        editRS("C14").Value=equipmentName
        editRS("C15").Value=equipmentLocation
        editRS("C16").Value=entryTime
        editRS("C17").Value=""
        editRS("C18").Value=""
        editRS.update
        editRS.close
    end if
next

srcExcelBook.Close
excelObj.Quit
Set srcExcelBook = Nothing
Set destExcelBook = Nothing
Set excelObj = Nothing  
set editRS=Nothing
conn.close
set conn=Nothing

T2 = now()
WScript.Echo "耗时:" & timeDiff(T2, T1) & "秒"

Function timeDiff(T2, T1)
    second2 = Hour(T2) * 3600 + Minute(T2) * 60 + Second(T2)
    second1 = Hour(T1) * 3600 + Minute(T1) * 60 + Second(T1)
    timeDiff = Abs(second2 - second1)
End Function

显示效果图:

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值