如何打开需要在vb登录的excel工作簿?

时间:2015-05-22 08:02:28

标签: excel vba excel-vba

我创建了一个具有登录功能的excel1(我输入了用户名和密码):

Pic:显示登录窗口。 (但我不能在这里发布图片,因为我没有10个声誉......)

现在我有另一个需要从excel1读取一些信息的excel2,我希望只需点击一个按钮就可以完成,所以我使用了vb。

但如何将用户名和密码发送到excel1并在后台打开excel1(我不希望在屏幕上显示打开的进程)。

由于

添加我的"登录"的更多说明窗口:

我插入一个VBA Userform作为登录窗口,它包括:

1, username_box: user can input login name here

2, pw_box: user can input password here

3, login_button: if click this button, sub login_button_Click() will be triggered

4, quit_button: if click this button, login will be cancelled

Private Sub login_button_Click()

Dim login_flag As Boolean
login_flag = False
'there is a sheet "users" which recorded the username and its password
For r = 2 To 100 Step 1
    If username_box.Text = Sheets("users").Cells(r, 1).Value And pw_box.Text = Sheets("users").Cells(r, 2).Value Then
        login_flag = True
        Application.Visible = True
        login_window.Hide
        pw_box = ""
    End If
Next r

If login_flag = False Then
    MsgBox "Input wrong"
    pw_box = ""
End If

End Sub

2 个答案:

答案 0 :(得分:0)

很大程度上取决于登录excel1的方式。

如果您使用Workbook_Open事件来呼叫用户填写登录详细信息的UserForm,则可以将其Application.EnableEvents = False停用,例如:

Sub OpenWb()

Dim FilePath As String
Dim WbSource As Workbook
Dim WbDest As Workbook
Dim ActWindow As String

Set WbDest = ActiveWorkbook

Application.EnableEvents = False

FilePath = "C:\tmp\excel1.xlsm" 'excel with password

Set WbSource = Workbooks.Open(FilePath)

ActWindow = ActiveWorkbook.Name

ActiveWindow.Visible = False

WbDest.Sheets(1).Cells(1, 1) = WbSource.Sheets(2).Cells(2, 2)

Application.EnableEvents = True
Windows(ActWindow).Visible = True
WbSource.Close savechanges:=False
End Sub

如果您想要阅读一些信息,以便用户看不到您可以将可见性设置为false: ActiveWindow.Visible = False

答案 1 :(得分:0)

根据我的理解你的问题可能是。

当您将excel工作簿作为intance打开时,userform将不会显示。如果是您正在谈论的数据传输,那么您可以轻松地执行此操作而不会触发workbook.open模块。