我已经好好看了一下,虽然我可以找到一些拼图,但我很难将它们放在一起。
我想要做的是编写一个宏来清除工作表中的过滤器,要求用户输入密码,然后应用程序使用该密码从受密码保护的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
答案 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单独控制。
注意:还可以选择在表单中的文本框中屏蔽密码。