我在Excel中的VBA中有以下代码:
Sub Main()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
MsgBox "The path is: " & vrtSelectedItem
Next vrtSelectedItem Else
End If
End With
Set fd = myVariable
End Sub
获取用户选择的文件路径并将其放入宏中的上下文是什么?
因此,如果我想在此代码中替换Computer& DelploymentInfo的文件路径:
.Range("A1:A2").FormulaR1C1 = "=INDEX('Computer&DeploymentInfo_06_23_15_v3.xlsx'!Table1[scheduleddate],MATCH([ @HostName],'Computer&DeploymentInfo_06_23_15_v3.xlsx'!Table1[computername],0))"
答案 0 :(得分:0)
将变量设为Public,超出过程范围:
Public vrtSelectedItem As String
Sub Main()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
MsgBox "The path is: " & vrtSelectedItem
Next vrtSelectedItem Else
End If
End With
Set fd = myVariable
End Sub
或者使过程成为返回字符串参数的UDF:
Function GetPath() As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
MsgBox "The path is: " & vrtSelectedItem
Next vrtSelectedItem Else
End If
End With
GetPath = CStr(vrtSelectedItem)
End Function
Sub Example()
Dim myFilePath As String
myFilePath = GetPath & IIf(Right(myFilePath, 1)= "\", vbNullString, "\")
MsgBox myFilePath
End Sub
最后,你会使用:
.Range("A1:A2").FormulaR1C1 = "=INDEX('" & myFilePath & "_06_23_15_v3.xlsx'!Table1[scheduleddate],MATCH([ @HostName],'" & myFilePath & "_06_23_15_v3.xlsx'!Table1[computername],0))"