新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V6.0版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 1190|回复: 2

[Excel课程] 软件限制使用技巧

[复制链接]
发表于 2020-4-6 17:11:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
181 取得电脑名称
+ E! h5 Z0 }9 m$ y0 G/ r+ X  C" y
  1. Private Sub Workbook_Open()
    ( Z) S+ e$ O$ L' _2 F" F8 V3 }7 `, j
  2.      Dim myName As String
    ; {/ ^5 I6 {9 V" ?* f+ `$ P
  3.      myName = Environ("Computername")
    / E+ x  ]: g# m, E6 \& X
  4.      If myName <> "ERPSERVER" Then+ w$ {, S1 Z& N2 A. g
  5.          MsgBox "对不起您不是合法用户,文件将关闭!"
    % @$ X; B* b: e, p5 G  M  j9 S
  6.         ThisWorkbook.Close+ t( t. f/ R! [' V
  7.      End If
    $ p3 P" @7 s0 q; Y( j3 D- [6 N3 G3 Y3 Q
  8. End Sub
复制代码

2 q: a# I& j3 O) `9 h/ |% F/ r/ b+ c# M7 G) y
代码解析2 u% n" `* x7 Y% E
工作簿的Open事件过程,在工作簿打开时判断电脑的名称,如果不是“ERPSERVER”则退出关闭工作簿。+ M; y! z( R0 a- m: X% _; Z0 S  A
第3行代码取得电脑的名称。Environ函数返回String,关连一个操作系统环境变量,语法如下:
7 q) D7 K5 d1 {! e  R! dEnviron({envstring | number})2 c: t4 k2 V7 g
参数envstring是可选的,包含一个环境变量名的字符串表达式。如果在环境字符串表格中找到参数envstring,则Environ函数返回在环境字符串表格中对应那个环境变量的等号后面的那段文本。
. l8 [& l8 p0 |Environ("Computername")返回电脑名称,如果需要取得当前登录用户的用户名则使用Environ("UserName")。6 `0 N! U8 v8 @$ v7 u5 h
参数number是可选的,用来表示环境字符串在环境字符串表格中的数值顺序。number 参数可以是任意的数值表达式,不过在计算前,它会先转换为一个整数。
) ~- n& ^. u/ |9 n第4行到第7行代码,如果当前电脑不是指定的电脑,关闭工作簿。在实际应用中需要配合其他方法使用户在打开时强制启用宏才能达到这一效果。( S& H: {' _$ M( T  c' ^. ?
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
 楼主| 发表于 2020-4-6 17:21:29 | 显示全部楼层
技巧182         取得逻辑盘序列号
) h, C; V1 {  H3 R- ^$ B
  1. Sub DriveID()
    - X' y8 |6 o& d2 J4 D: e9 n2 I
  2.      Dim DriveID
    ) R7 o5 o6 I3 E! V# s! N" Y; f
  3.      Set DriveID = CreateObject("Scripting.FileSystemObject")9 R7 d4 l1 Q2 P
  4.     MsgBox "C盘的序列号是:" & DriveID.GetDrive("C").SerialNumber, 648 ^5 @# `4 {. [6 S% O
  5. End Sub
复制代码

* r2 f+ r8 [+ o电脑硬盘 9 位数 编码
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 17:27:10 | 显示全部楼层
技巧183         使用API取得硬盘信息. H$ ?0 Y& m/ T1 d
2 N5 d) H% b/ I: z$ D" H. S
  1. Private Const MAX_IDE_DRIVES As Long = 4
    " C, `2 k1 V7 l* B  c# f) ~. O+ P- W
  2. Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 5129 X; ?/ B- k( p# S# [: w: s# f1 p
  3. Private Const IDENTIFY_BUFFER_SIZE As Long = 5127 C/ T! W/ _8 j8 @- [
  4. Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512' O8 V3 Q$ K9 p6 x4 j0 {- U
  5. Private Const DFP_GET_VERSION As Long = &H740802 F/ y- A6 X+ N4 \2 H2 @
  6. Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084% L# R+ I+ t5 N: y3 B( B, T
  7. Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088
    4 H! s! n( P, t6 H" s$ _5 ^! O. S
  8. '      ……代码略,详见附件: p, X; h0 N/ n' D  k; |# l7 y- H
  9.   '取得硬盘信息:型号/物理系列号(唯一)
    . ~/ f9 a! e, O" ]4 z* P/ D! o
  10.   Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String4 L9 p6 w7 r# g5 O9 ]/ o4 a7 @; O' ]
  11.       If GetDiskInfo(numDisk) = 1 Then
    " b% W0 M& Q# V. O5 c! E( s$ U
  12.           Dim pSerialNumber As String, pModelNumber As String
    ) n) D! I0 }, A, d
  13.           pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
    6 G/ w+ z2 Z$ Y( G. f
  14.           pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode). q* v8 Q. b+ h% A. {" r
  15.           Select Case numType
    0 G3 _) q; K: Y6 M/ t: Q
  16.               Case hdOnlyModel  '仅型号& F  K7 x' p5 i% b- b3 q6 C
  17.                   GetHardDiskInfo = Trim(pModelNumber)
    ' _" }$ P! N9 ?3 g4 j: w
  18.               Case hdOnlySN  '仅系列号6 x% a% ]* H+ \( x; v0 t
  19.                   GetHardDiskInfo = Trim(pSerialNumber)
    . Z& J" E, l- S% n8 c& \: N9 F. l
  20.               Case Else   '型号,系列号, J0 K+ n( A. [. H7 G* S
  21.                   GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
    5 E2 ~1 z) L5 x# u- r* D$ M1 T8 k/ Z9 J0 {
  22.           End Select
    ( H+ b- ~; P1 Q9 B* I
  23.        End If
    5 x- n+ H) b% ?
  24. End Function
复制代码
  1. Sub DiskId(): q7 U+ a+ ~# E* w
  2.     MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _
    $ R; v. I6 e# I! T' E2 E" n
  3.     & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")
    5 x0 R6 q( e- H6 p3 _2 U
  4. End Sub
    % F) ]$ e) L& ~% J" T+ \
复制代码
取得硬盘物理序号 diskid.xls (78 KB, 下载次数: 0, 售价: 10 个金币) 9 A4 ]* z2 Z& v$ F) m

" o+ ?9 I- l2 F) a( H4 g
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-5-28 16:21 , Processed in 0.177896 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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