VBA文件路径对象语法

时间:2015-06-24 20:12:50

标签: excel vba excel-vba

我在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))"

1 个答案:

答案 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))"