刷新数据时,使用Excel中的Userforms自动输入密码

时间:2015-07-06 12:09:06

标签: excel vba excel-vba passwords

我已经好好看了一下,虽然我可以找到一些拼图,但我很难将它们放在一起。

我想要做的是编写一个宏来清除工作表中的过滤器,要求用户输入密码,然后应用程序使用该密码从受密码保护的SQL源刷新数据,然后保存为今天的日期。 / p>

作为今天的日期保存的宏相当容易,我已经做了类似的事情。我想我也破解了过滤器问题。

我正在努力解决密码问题。当我手动刷新时,我必须输入大约七次密码。这显然有点裤子,所以我宁愿让用户输入一次,然后让宏“记住”这个密码,并在需要时输入它。

我知道我需要调用一个Userform,我已经创建并调用了PassBox。我甚至在那里创建了一个文本框,名为PasswordBox,一个OK按钮富有想象力地称为“OK”。它甚至显示了hashmarks而不是实际的密码。

我倒下的地方是如何让Excel使用密码数据。我没有在本地保存密码,因为如果有人更改了数据并且导致数据保护问题,我会更加难以修复电子表格。

我假设我需要让Excel将密码字符串存储为值,然后将其重复到SQL Server,但我不知道该怎么做!

我到目前为止的代码:

Sub Refresher()
'Refreshes the spreadsheet and copies it with today's date

'Clears all filters

On Error Resume Next
ActiveWorkbook.ShowAllData


'Calls Password Userform, saves password entered there as a string

'Step 1:

 Call PassBox

'Step 2 : once user hits ok, save string entered in password box for use in SQL servers

'Refreshes Spreadsheet

       ActiveWorkbook.RefreshAll

'Step 2 Enter password.


'Saves Spreadsheet

ActiveWorkbook.SaveAs FileName:=ActiveWorkbook.Path & "+++Location+++" & Format(Date, ddmmyyyy) & ".xls"

End Sub

1 个答案:

答案 0 :(得分:0)

正如先前的评论所指出的那样,按照你打算这样做的方式来做这件事有点困难。但是不可能编写SQL更新代码,然后在代码中使用Form1.txtPasswordBox.Value来获取数据吗?

Set conRCServer = New ADODB.Connection
conServer.ConnectionString = "PROVIDER=SQLOLEDB; " _
    & "DATA SOURCE=YourSQL_Server; " _
    & "INITIAL CATALOG=DatabaseName; " _
    & "User ID=" & frmCredentials.fldLogin & ";" _
    & "Password=" & frmCredentials.fldPassword
conRCServer.Open

因此,您将表单frmCredentials呈现给用户并要求输入用户名和密码。输入两者并且该对有效后,您可以使用VBA更新所有SQL数据。当然,这意味着您必须将Excel文件的所有直接链接分解为SQL,并且所有更新都将使用VBA单独控制。

注意:还可以选择在表单中的文本框中屏蔽密码。