Excel 在“刷新数据”宏的末尾添加If/Else条件
我有一个宏,它是从工作簿第1页上的按钮生成的。运行宏时,它将从我的工作簿中删除密码保护,刷新与另一工作簿的数据链接(宏将用户带到目录路径,但用户必须高亮显示工作簿,然后选择“确定”),然后宏将通过将密码保护放回我的工作簿来完成 只要用户高亮显示工作簿并选择“确定”,此操作就可以正常工作。如果用户决定选择“取消”,宏将不会完成 如果用户选择“取消”而不是突出显示工作簿并选择“确定”,我是否可以将If/Else条件写入宏以避免调试窗口。宏在没有If/Else元素的情况下运行良好Excel 在“刷新数据”宏的末尾添加If/Else条件,excel,vba,Excel,Vba,我有一个宏,它是从工作簿第1页上的按钮生成的。运行宏时,它将从我的工作簿中删除密码保护,刷新与另一工作簿的数据链接(宏将用户带到目录路径,但用户必须高亮显示工作簿,然后选择“确定”),然后宏将通过将密码保护放回我的工作簿来完成 只要用户高亮显示工作簿并选择“确定”,此操作就可以正常工作。如果用户决定选择“取消”,宏将不会完成 如果用户选择“取消”而不是突出显示工作簿并选择“确定”,我是否可以将If/Else条件写入宏以避免调试窗口。宏在没有If/Else元素的情况下运行良好 Sub Refres
Sub RefreshData()
'
'RefreshData Macro
'Unprotect, Refresh Data, Protect
'
Application.ScreenUpdating = False
With Sheet4
.Protect Password:="password", UserInterfaceOnly: = True
ThisWorkbook.UpdateLink Name:=ThisWorkbook.LinkSources
If ......... = False Then
' Cancel was selected and Data Not Refreshed
Else
' OK was selected and Data Refreshed
End If
End With
End Sub
使用
GetOpenFilename
查找路径和文件。如果取消对话框,通常包含完整路径和文件名的字符串将变为状态为“False”的字符串
这与布尔值False不同。这有点不同寻常,但以上是我找到的最好的处理方法。不确定我在这里做错了什么。宏运行,但我必须自己选择完整路径。如果我取消MsgBox的工作,并非常满意的元素。但是,我不知道为什么我必须自己输入完整的目录路径。完整路径在
fn
中。这可以通过查看VBE的即时窗口(VBE中的Ctrl+G)来演示。我正在学习VB代码的早期阶段。我在VBE中,选择了Ctrl+G,这将打开即时窗口,但该窗口中没有任何内容。如果运行我提供的代码并选择一个文件,则完整路径和文件名将存储在fn
中。我的代码将其输出到即时窗口进行检查。您可以使用它打开工作簿并处理更新。如果提供有关“宏将用户带到目录路径,但用户必须突出显示工作簿,然后选择“确定”的详细信息,则回答此问题会更容易。ThisWorkbook.UpdateLink是否正在打开对话框,或者上面是否有未发布的代码?
Dim fn As String
fn = Application.GetOpenFilename(FileFilter:="Excel Files (*.xl*), *.xl*", _
Title:="Select a workbook to update from")
If fn = "False" Then
MsgBox "Stopping because you did not select a file"
Else
' fn contains the full path and filename. e.g. c:\temp\MyWorkBook.xlsx
' wait until you get here before you unprotect the workbook
Debug.Print CStr(fn)
' do the update
' reprotect the workbook
End If