【问题标题】:Evaluate cell's value into path将单元格的值评估为路径
【发布时间】:2020-02-29 04:24:59
【问题描述】:

我有这个值 "ThisWorkbook.FullName" 存储在 Worksheets(1)

A1 单元格中

在我的宏中,我需要获取单元格的值并在路径中对其进行评估,例如 "D:\Users\delta\Desktop\Projects\Cars\test.xlsm"

通过执行下面的代码,我得到了字符串ThisWorkbook.FullName。我想得到执行ThisWorkbook.FullName 命令的结果,即当前工作簿位置的路径(字符串)

有没有办法做到这一点?我在 Google 中进行了一些搜索,但没有成功。

Public Sub try()
    Debug.Print ThisWorkbook.Worksheets(1).Range("A1").Text ' this should be evaluated
End Sub

提前谢谢你!

【问题讨论】:

  • 出于好奇,您为什么尝试/需要这样做?
  • “评估”到底是什么意思?您的代码仅表明您希望将其打印到调试窗口。
  • 问:出于好奇,您为什么尝试/需要这样做? A:我的宏将处理Access 数据库(test.accdb),它的名字就像Excel 的文件。默认情况下,Access 文件位于带有 Excel 文件的文件夹中。但它可以移动到其他地方,或者将来可能会更改两个文件的位置。我想有机会通过编辑 A1 单元格来指向 Access 文件的新路径
  • 不需要保存路径。您可以使用ThisWorkbook.Path & "\" & test.accdb 访问该文件
  • 您似乎想在单元格 A1 中编写一个代码表达式,该表达式应在运行时进行评估。这是正确的理解吗?

标签: excel vba


【解决方案1】:

根据描述,您确实不需要评估变量,因为您可以传递单元格中设置的值。以下是您可以采用的示例。

Public Sub Test()
    Dim strAcDb As String
    strAcDb = strAccDBPath("Test.Accdb")
    If strAcDb = "" Then
        MsgBox "Access DB not found!", vbExclamation
        Exit Sub
    End If
End Sub

Private Function strAccDBPath(strDbName As String) As String
    If Dir(ThisWorkbook.Path & Application.PathSeparator & strDbName) <> "" Then
        strAccDBPath = ThisWorkbook.Path & Application.PathSeparator & strDbName
    ElseIf Dir(ThisWorkbook.Worksheets(1).Range("A1").Value) <> "" Then
        strAccDBPath = ThisWorkbook.Worksheets(1).Range("A1").Value
    Else
        strAccDBPath = ""
    End If
End Function

注意: 无论如何,不​​要使用Range.Text 方法,这可能会导致一些意想不到的结果!请改用ValueValue2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2019-03-30
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多