首页 > 解决方案 > 设置工作簿路径中的文本单元格引用

问题描述

我有一个 VBA 脚本,可以在我的桌面上打开一个不同的工作簿。路径中有两个变量决定了我希望打开的文件的位置:(1)PC 的用户;(2) 文件名。PC 变量的用户在单元格 J3 上定义,但在 J2 上定义文件的名称,两者都在同一张表上。代码如下:

Option Explicit

Sub Chakars()

    Dim BeiguSheet As Worksheet
    Dim FileJauda As String

    Set BeiguSheet = ThisWorkbook.Sheets("Final")

        FileJauda = "C:\Users\ugikam\Desktop\" & "Jauda_" & BeiguSheet.Range("J2").Value & ".xlsm"

    Workbooks.Open (FileJauda)

End Sub

在定义 FileJauda 的行中,您可以看到对正常工作的单元格 J2 的引用。但是,当我尝试使用下面的行替换路径中的另一个变量(即“ugikam”的用户)时,它无法再找到该文件。问题出在哪里?这可能与“ugikam”是一串文本有关吗?

FileJauda = "C:\" & BeiguSheet.Range("J3").Value & "\Desktop\" & "Jauda_" & BeiguSheet.Range("J2").Value & ".xlsm"

标签: excelvba

解决方案


问题可能来自不可见的字符。我尝试使用以下代码清理两个字符串。此外,您可以使用恐吓窗口逐一调试和检查单元格值。最后,您尝试打开名称为FilePath的工作簿,该名称未在任何地方定义。尝试用 Workbooks.Open (FileJauda) 替换Workbooks.Open ( FilePath )

Option Explicit

Sub Chakars()

    Dim BeiguSheet As Worksheet
    Dim FileJauda As String

    Set BeiguSheet = ThisWorkbook.Sheets("Final")

        With BeiguSheet
            FileJauda = "C:\" & _
                        Application.Clean(Application.Trim(.Range("J3").Value)) & _
                        "\Desktop\Jauda_" & _
                        Application.Clean(Application.Trim(.Range("J2").Value)) & _
                        ".xlsm"
        End With

    Workbooks.Open (FileJauda)

End Sub

推荐阅读