注册 登录
编程论坛 VB6论坛

错误三次则结束程序的问题

chen3bing 发布于 2019-05-09 15:26, 2456 次点击
我想做的这个案例要求:利用代码打开"生产表.xlsx",如果输入密码错误时继续弹出输入框,
连续错误三次则关闭程序。
正确密码是789.
我在EXCEL VBA里正常运行,可是VB里不行。
代码如下:
Option Explicit

Dim XlApp As New Excel.Application    '使用 Excel 对象删除指定行
Dim XlBook As New Excel.Workbook
Dim XlSheet As New Excel.Worksheet

Private Sub Command1_Click()
On Error Resume Next
Dim i As Byte, PsdStr As String
Do
    Err.Clear
    i = i + 1
    PsdStr = XlApp.InputBox("请输入密码:" & Chr(10) & "您还有" _
        & 4 - i & "次机会", "第" & i & "次输入密码", , , , , , 3)
    XlApp.Workbooks.Open XlApp.ThisWorkbook.Path & "\生产表.xlsx", , , , PsdStr
    If i = 3 Then
        MsgBox "对不起,你已错误三次,程序即将关闭"
        Exit Sub
    Else
        If Err.Number = 0 Then Exit Sub
    End If
Loop
XlApp.StatusBar = "打开工作簿成功..."

End Sub

Private Sub Form_Load()
Set XlApp = CreateObject("Excel.Application") '创建EXCEL对象
XlApp.Visible = True
XlApp.Caption = "应用程序调用 Microsoft Excel"

Set XlBook = XlApp.Workbooks.Open(App.Path & "\7-29 防错处理二.xlsm")
Set XlSheet = XlBook.Worksheets(1)
End Sub
我尝试着改了一下代码,上面是我改过的,还是不行,打不开那个生产表。
请问高手,哪里有问题呀?谢谢!
付VBA代码:
Sub 打开工作簿()
    On Error Resume Next  '错误时执行下一步
    Dim i As Byte, PsdStr As String
    Do  '启动循环
        Err.Clear    '清除错误,相当于将Err.Number属性值归零,其作用是避免上一次的错误干扰当前操作的判断结果
        i = i + 1    '累加变量,记录输入密码的次数
        '弹出输入框让用户输入打开工作簿的密码,同时显示允许输入几次
        PsdStr = Application.InputBox("请输入密码:" & Chr(10) & "您还有" & 4 - i & "次机会", "第" & i & "次输入密码", , , , , , 3)
        '利用前面输入的密码去打开代码所在工作簿同路径下的“生产表.xlsx”
        Workbooks.Open ThisWorkbook.Path & "\生产表.xlsx", , , , PsdStr
        If i = 3 Then '如果已经错误三次
            MsgBox "对不起,你已错误三次,程序即将关闭" '则提示用户
            Exit Sub '然后关闭程序
        Else   '否则
           '如果程序没有错误就结束循环(密码正确的情况下才会无错误),如果有错误则会返回Do语句之后,重新输入密码
            If Err.Number = 0 Then Exit Do
        End If
    Loop
    Application.StatusBar = "打开工作簿成功..." '在状态栏显示打开成功
End Sub
10 回复
#2
chen3bing2019-05-09 17:36
只有本站会员才能查看附件,请 登录

这儿提示失败。
#3
wufuzhang2019-05-09 22:00
回复 2楼 chen3bing
XlApp.Workbooks.Open XlApp.ThisWorkbook.Path & "\生产表.xlsx", , , , PsdStr 改为 XlApp.Workbooks.Open App.Path & "\生产表.xlsx", , , , PsdStr

Set XlBook = XlApp.Workbooks.Open(App.Path & "\7-29 防错处理二.xlsm")这句注释不要
Set XlSheet = XlBook.Worksheets(1)这句注释不要


[此贴子已经被作者于2019-5-9 22:03编辑过]

#4
chen3bing2019-05-10 08:05
回复 3楼 wufuzhang
谢谢!还是打不开,貌似If Err.Number = 0 Then Exit Sub这一句有错误。
只有本站会员才能查看附件,请 登录
#5
wufuzhang2019-05-10 09:11
回复 4楼 chen3bing
我猜问题应该出在你的“生产表.xlsx”密码设置上面,我自己建一个Excel,然后设置安全密码789,
运行程序,点击Command1按钮,输入密码,就可以打开表格。
我不知道你的表格是怎么设置密码的。
#6
chen3bing2019-05-10 09:33
回复 5楼 wufuzhang
谢谢!那个生产表是一本书里的例子,EXCEL VBA程序开发自学宝典。
我也自己建立了一个EXCEL 2010的工作簿,设置密码,还是打不开。
设置密码的方法,百度上搜的。连接如下:
https://jingyan.baidu.com/article/455a99508975c3a1662778f7.html
你是怎么设置密码的呀?
#7
chen3bing2019-05-10 09:36
回复 5楼 wufuzhang
你的程序跟我的是一样的吗?
#8
wufuzhang2019-05-10 09:41
回复 7楼 chen3bing
我就是复制你的代码,然后修改的。
密码设置见下图:
只有本站会员才能查看附件,请 登录
#9
chen3bing2019-05-10 09:57
回复 8楼 wufuzhang
你的office是哪个版本的?我怎么找不到你那个安全什么的菜单?
#10
wufuzhang2019-05-10 10:14
回复 9楼 chen3bing
我用的是WPS2019版。


给你找了一个Excel 07的

只有本站会员才能查看附件,请 登录
#11
chen3bing2019-05-10 10:50
回复 8楼 wufuzhang
你能把你的代码发给我吗?谢谢!
1