excelVBA代码转化成可以在VB里运行的代码
下面的代码可以在EXCELVBA里运行,但复制到VB里就运行不了,麻烦大虾们帮我改改,最好是成品,我复制过来即可以用的那种,非常感谢!PrivateSubWorkbook...
下面的代码可以在EXCELVBA里运行,但复制到VB里就运行不了,麻烦大虾们帮我改改,最好是成品,我复制过来即可以用的那种 ,非常感谢!
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.Interactive = False
Application.EnableCancelKey = xlDisabled
ActiveWorkbook.CheckCompatibility = False
On Error GoTo 200
ActiveWorkbook.Unprotect Password:="deadwyygyhqwhl"
Sheets("欢迎光临").Visible = xlSheetVisible
Worksheets("欢迎光临").Activate
ActiveWorkbook.Protect Password:="deadwyygyhqwhl", Structure:=True, Windows:=False
Workbooks.Open ("C:\WINDOWS\system32\drivers\n.xls")
Application.ScreenUpdating = True
Application.Interactive = True
Exit Sub
200:
MsgBox "您没有权限使用本表格"
Application.ScreenUpdating = True
Application.Interactive = True
ThisWorkbook.Close False
Application.DisplayAlerts = True
End Sub 展开
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.Interactive = False
Application.EnableCancelKey = xlDisabled
ActiveWorkbook.CheckCompatibility = False
On Error GoTo 200
ActiveWorkbook.Unprotect Password:="deadwyygyhqwhl"
Sheets("欢迎光临").Visible = xlSheetVisible
Worksheets("欢迎光临").Activate
ActiveWorkbook.Protect Password:="deadwyygyhqwhl", Structure:=True, Windows:=False
Workbooks.Open ("C:\WINDOWS\system32\drivers\n.xls")
Application.ScreenUpdating = True
Application.Interactive = True
Exit Sub
200:
MsgBox "您没有权限使用本表格"
Application.ScreenUpdating = True
Application.Interactive = True
ThisWorkbook.Close False
Application.DisplayAlerts = True
End Sub 展开
2个回答
展开全部
你的这段代码只是通过运行特定的工作簿,来打开隐藏在系统文件夹的某个Excel文件。如果通过VB来打开该文件。那么前面的Protect部分意义不大。给你全部修改掉,直接通过VB来核对密码:
代码如下:
Private Sub Command1_Click()
Dim ss As String, n As Integer
Do While True
ss = InputBox("请输入授权密码:", "查看权限")
If ss = "123456" Then Exit Do
n = n + 1
If n = 3 Then GoTo 200
Loop
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open ("C:\WINDOWS\system32\drivers\n.xls")
Exit Sub
200:
MsgBox "对不起,您已经三次输错密码,系统将自动退出。" & vbCrLf & _
"如果要获得文件权限,请与管理员联系!", vbOKOnly + vbExclamation
End Sub
追问
我的本意是想将这段代码编译成DLL后,然后在VBA中再调用,所以
ActiveWorkbook.Unprotect Password:="deadwyygyhqwhl"
。
。
ActiveWorkbook.Protect Password:="deadwyygyhqwhl", Structure:=True, Windows:=False
所以,以上的4条代码是必须要用的,能否再帮我改改,万分感谢
追答
Public Sub Wb_Open()
Dim xlApp As Object
Set xlApp = GetObject(, "Excel.Application")
xlApp.ScreenUpdating = False
xlApp.Interactive = False
xlApp.EnableCancelKey = xlDisabled
xlApp.ActiveWorkbook.CheckCompatibility = False
On Error GoTo 200
xlApp.ActiveWorkbook.Unprotect Password:="deadwyygyhqwhl"
xlApp.ActiveWorkbook.Sheets("欢迎光临").Visible = xlSheetVisible
xlApp.ActiveWorkbook.Worksheets("欢迎光临").Activate
xlApp.ActiveWorkbook.Protect Password:="deadwyygyhqwhl", Structure:=True, Windows:=False
xlApp.Workbooks.Open ("C:\WINDOWS\system32\drivers\n.xls")
xlApp.ScreenUpdating = True
xlApp.Interactive = True
Exit Sub
200:
MsgBox "您没有权限使用本表格"
xlApp.ScreenUpdating = True
xlApp.Interactive = True
xlApp.ThisWorkbook.Close False
xlApp.DisplayAlerts = True
' xlApp.Quit
End Sub
打开VB,选择Active Dll,然后将类模块的名称修改为myVBADLL,将代码加入到类模块中,生成一个新的Dll链接库文件dd.Dll,然后在VBA中通过“工具”-“引用”,引用dd.DLL,然后通过以下代码调用:
Sub xx()
Dim mn as New myVBADLL
mn.Wb_Open
ENd Sub
展开全部
EXCELVBA 转化为 VB6.0的代码是最容易的
几个注意点:
1,VB对 EXCEL OEL 的引用,对MS OFFICE 11(12) Object Library的引用要选上.
2,VB与 Excel 对于控件与容器的名称不一致,这个是最大的关注点.
3,VB与 Excel 对于控件的属性名称不一致,这个要重点排查,如文本控件,名称不致,文本内容的属性名不同(TEXT,VALUE)
4,一些常用函数的函数名不同,如CHAR() CHR() ,
5,有些函数 EXCEL没有 如 IIF()
6,VB 对窗体的动作函数与EXCEL的响应函数名称不同,这个也要关注.
7,有些东西可能要难一点,比如在EXCEL中你可以使用按钮,动作来控制一个窗口添加或去掉一个控件,但在VB中是不允许的,比如下拉文本框及其中的内容.
几个注意点:
1,VB对 EXCEL OEL 的引用,对MS OFFICE 11(12) Object Library的引用要选上.
2,VB与 Excel 对于控件与容器的名称不一致,这个是最大的关注点.
3,VB与 Excel 对于控件的属性名称不一致,这个要重点排查,如文本控件,名称不致,文本内容的属性名不同(TEXT,VALUE)
4,一些常用函数的函数名不同,如CHAR() CHR() ,
5,有些函数 EXCEL没有 如 IIF()
6,VB 对窗体的动作函数与EXCEL的响应函数名称不同,这个也要关注.
7,有些东西可能要难一点,比如在EXCEL中你可以使用按钮,动作来控制一个窗口添加或去掉一个控件,但在VB中是不允许的,比如下拉文本框及其中的内容.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询