如何在VBA中将字符串转换为工作簿名称

时间:2013-10-02 07:28:08

标签: excel-vba vba excel

Sub openwb()

Dim x260path As String

x260path = "E:\sarath\PTMetrics\20131002\D8 L538-L550 16MY\D8 L538-L550_16MY_Powertrain Metrics_" & Format(Date, "YYYYMMDD") - 1

Workbooks("x260path").Activate

ActiveWorkbook.SaveAs ["E:\sarath\PTMetrics\20131002\D8 L538-L550 16MY\D8 L538-L550_16MY_Powertrain Metrics_" & Format(Date, "YYYYMMDD")]

Debug.Print x260path

End Sub

这里,当我执行时,错误显示“下标超出范围”。并且它出现在第4行。当我使用'workbook'来声明'x260path'而不是字符串时,它在第3行显示另一个错误“对象变量或块变量未设置”。你可以帮忙吗?为什么会这样?

1 个答案:

答案 0 :(得分:1)

在VBA中,=Today()的等效函数为Date()(*或Date

x260path = CONCATENATE("..." & Date)

或者,使用Now()函数(虽然也包括时间戳)

x260path = CONCATENATE("..." & Now)

debug.print Date 
  

2013年2月10日

debug.print Now
  

02/10/2013 08:39:20


某些电子表格函数可用于WorksheetFunction类。例如

Sub Main()

    Dim sum As Double
    sum = WorksheetFunction.sum(10, 20)
    MsgBox sum

End Sub

注意:当您在键入sum = WorksheetFunction.时输入.时,您应该获得VBA的智能感知帮助。它是可以与WorksheetFunction类一起使用的所有可用函数的列表。

enter image description here

在您的情况下,=Concatenate函数等同于VBA中的&运算符。因此,最简单的方法是使用&

加入两个字符串
x260path = "C:\..." & date

如果您尝试使用的功能在Intelli-sense中不存在,您可以创建自己的UDF,或者您可以对该功能如何工作以及如何覆盖它进行一些在线研究。