我创建了一个具有登录功能的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
答案 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模块。