Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA文件路径对象语法_Vba_Excel - Fatal编程技术网

VBA文件路径对象语法

VBA文件路径对象语法,vba,excel,Vba,Excel,我在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 vrtSelec

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

在过程范围之外公开变量:

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

vrtSelectedItem从未被赋值,可能会告诉用户使用SelectedItems.Item(1)@Sorceri我个人认为任何原始代码都不会工作,因为它充满了语法错误-但这不是OP要求的:)-我只是演示传递变量所需的逻辑。