Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1991|回复: 9

[已解决]请邦助解释VBA代码,谢谢!

[复制链接]
发表于 2011-10-29 20:56 | 显示全部楼层 |阅读模式
    在一个Execl程序中,基本上用函数计算,但有一段VBA代码,不知有什么用?!用VBA语句解释器每一句有解释,但不知此段代码起了什么作用?还是不得而知!请高手解答为感,谢谢!

Sub Auto_Open()
On Error Resume Next

    Set fs = CreateObject("Scripting.FileSystemObject")
    StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
    StrDriveArray = Split(StrDrive, ",")
    For StartPos = 1 To UBound(StrDriveArray)
        Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\\")))
        If d.DriveType = 1 Then
            s = d.SerialNumber
            Exit For
        End If
    Next
    If s <> "" Then
        Range("1!d8") = s
    Else
        Range("1!d8") = "系统未检测到U盘!"
   End If
   
   Set d = Nothing
   Set fs = Nothing
   
    a = Range("输入曲线要素!d7")
    Range("2!u2") = a
    b = Range("输入曲线要素!d8")
    Range("2!u3") = b
   
    Range("1!d10") = Date
   
End Sub

最佳答案
2011-10-29 23:32
Sub Auto_Open()
On Error Resume Next

    Set fs = CreateObject("Scripting.FileSystemObject")
    StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '设定硬盘 盘符号,B -Z 盘   
StrDriveArray = Split(StrDrive, ",") '将盘符号字符串,转换成数组   
For StartPos = 1 To UBound(StrDriveArray) '循环数组      
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\\"))) '
        If d.DriveType = 1 Then '是否U盘           
s = d.SerialNumber '读取U盘编号           
Exit For '退出循环        
End If
    Next
    If s <> "" Then '
        Range("1!d8") = s 'U盘编号 交给 单元格   
Else
        Range("1!d8") = "系统未检测到U盘!"
   End If
   Set d = Nothing '释放对象
   Set fs = Nothing
    '以下几句是单元格数据的复制,。。。。
    a = Range("输入曲线要素!d7")
    Range("2!u2") = a
    b = Range("输入曲线要素!d8")
    Range("2!u3") = b
    Range("1!d10") = Date
End Sub

这个代码是的一般应用于,用一个特定的U盘 才能打开文件!
发表于 2011-10-29 23:16 | 显示全部楼层
我猜,别人不知你理解了几分。
假如,你一点也不理解,其中有的地方可能对你很难一下理解
建议挑你看不懂的句子问,哪怕1帖求助1句的含义,总会有希望都能理解的
回复

使用道具 举报

发表于 2011-10-29 23:32 | 显示全部楼层    本楼为最佳答案   
Sub Auto_Open()
On Error Resume Next

    Set fs = CreateObject("Scripting.FileSystemObject")
    StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '设定硬盘 盘符号,B -Z 盘   
StrDriveArray = Split(StrDrive, ",") '将盘符号字符串,转换成数组   
For StartPos = 1 To UBound(StrDriveArray) '循环数组      
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\\"))) '
        If d.DriveType = 1 Then '是否U盘           
s = d.SerialNumber '读取U盘编号           
Exit For '退出循环        
End If
    Next
    If s <> "" Then '
        Range("1!d8") = s 'U盘编号 交给 单元格   
Else
        Range("1!d8") = "系统未检测到U盘!"
   End If
   Set d = Nothing '释放对象
   Set fs = Nothing
    '以下几句是单元格数据的复制,。。。。
    a = Range("输入曲线要素!d7")
    Range("2!u2") = a
    b = Range("输入曲线要素!d8")
    Range("2!u3") = b
    Range("1!d10") = Date
End Sub

这个代码是的一般应用于,用一个特定的U盘 才能打开文件!
回复

使用道具 举报

 楼主| 发表于 2011-10-30 10:01 | 显示全部楼层
Select 发表于 2011-10-29 23:16
我猜,别人不知你理解了几分。
假如,你一点也不理解,其中有的地方可能对你很难一下理解
建议挑你看不懂 ...

     有些句子是理解的,不理解的用VBA解释器也可了解一些,但解释的意思有点文不对题,对上、下句连起来就有点头疼,尤其对整个vBA代码的作用还是不很明白?其作用了解了,反过来再看单句就容易理解了!也要谢谢你的指点!
回复

使用道具 举报

发表于 2011-10-30 11:41 | 显示全部楼层
Sub Auto_Open()    '子程序 Auto_Open()
On Error Resume Next    '当错误 转到 下一个

    Set fs = CreateObject("Scripting.FileSystemObject")    '设定fs=<创建工程>("Scripting.FileSystemObject")
    StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"    'StrDrive="B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
    StrDriveArray = Split(StrDrive, ",")    'StrDriveArray=<分割字符串>(StrDrive,",")
    For StartPos = 1 To UBound(StrDriveArray)    '设定变量范围为StartPos=1到<数组上限>(StrDriveArray)
        Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\\")))    '设定d= fs的GetDrive( fs的GetDriveName( fs的GetAbsolutePathName(StrDriveArray(StartPos) & ":\\")))
        If d.DriveType = 1 Then    '如果  d的DriveType=1 则执行
            s = d.SerialNumber    's= d的SerialNumber
            Exit For    '退出for循环
        End If    'If判断过程结束
    Next    '下一个
    If s <> "" Then    '如果 s 不等于 空值 则执行
        Range("1!d8") = s    '<单元格>区域("1!d8")=s
    Else    '否则
        Range("1!d8") = "系统未检测到U盘!"    '<单元格>区域("1!d8")="系统未检测到U盘!"
   End If    'If判断过程结束
   
   Set d = Nothing    '设定d=空值
   Set fs = Nothing    '设定fs=空值
   
    a = Range("输入曲线要素!d7")    'a=<单元格>区域("输入曲线要素!d7")
    Range("2!u2") = a    '<单元格>区域("2!u2")=a
    b = Range("输入曲线要素!d8")    'b=<单元格>区域("输入曲线要素!d8")
    Range("2!u3") = b    '<单元格>区域("2!u3")=b
   
    Range("1!d10") = Date    '<单元格>区域("1!d10")=当前日期
   
End Sub    '子程序结束

评分

参与人数 1 +1 收起 理由
YANG6815475 + 1

查看全部评分

回复

使用道具 举报

发表于 2011-10-30 11:53 | 显示全部楼层
Sub Auto_Open()
On Error Resume Next

         Set fs = CreateObject("Scripting.FileSystemObject")
         StrDrive = "B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '设定硬盘 盘符号,B -Z 盘   
      StrDriveArray = Split(StrDrive, ",") '将盘符号字符串,转换成数组   
      For StartPos = 1 To UBound(StrDriveArray) '循环数组      
            Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(StrDriveArray(StartPos) & ":\\"))) '
            If d.DriveType = 1 Then '是否U盘           
                  s = d.SerialNumber '读取U盘编号           
                  Exit For '退出循环        
            End If
          Next
      If s <> "" Then '
              Range("1!d8") = s 'U盘编号 交给 单元格   
      Else
              Range("1!d8") = "系统未检测到U盘!"
         End If
         Set d = Nothing
         Set fs = Nothing
    '以下几句是单元格数据的复制
      a = Range("输入曲线要素!d7")
          Range("2!u2") = a
          b = Range("输入曲线要素!d8")
          Range("2!u3") = b
          Range("1!d10") = Date
End Sub

评分

参与人数 1 +1 收起 理由
YANG6815475 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-10-31 20:28 | 显示全部楼层
goodmeaning 发表于 2011-10-30 11:53
Sub Auto_Open()
On Error Resume Next

解释的也很不错,谢谢你!
回复

使用道具 举报

 楼主| 发表于 2011-10-31 20:30 | 显示全部楼层
LIYEHUAOK 发表于 2011-10-30 11:41
Sub Auto_Open()    '子程序 Auto_Open()
On Error Resume Next    '当错误 转到 下一个

后半段解释得不错,谢谢你!!!
回复

使用道具 举报

发表于 2011-12-11 09:38 | 显示全部楼层
这个代码能读取硬盘上的数据吗!
回复

使用道具 举报

 楼主| 发表于 2011-12-11 09:51 | 显示全部楼层
LIYEHUAOK 发表于 2011-12-11 09:38
这个代码能读取硬盘上的数据吗!

这是一个测量程序,他用这个代码进行保密的!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 13:50 , Processed in 0.399101 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表