2013-10-02 2 views
1
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-й строке. Когда я использую «книгу», чтобы объявлять «x260path» вместо строки, она показывает другую ошибку, говорящую «переменная объекта или с переменной блока, не заданной» в строке 3. Может ли помочь? Почему это происходит?Как преобразовать строку в название рабочей книги в VBA

ответ

1

В VBA эквивалентная функция =Today() является Date() (* или Date)

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

В качестве альтернативы, использовать Now() функцию (которая включает в себя временную метку, а также, хотя)

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

debug.print Date 

02/10/2013

и

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. как только вы наберете в . вы должны получить Intelli-смысловую помощь в УВА. Это список всех доступных функций, которые вы можете использовать с классом WorksheetFunction.

enter image description here

В вашем случае функция =Concatenate эквивалентно & оператора в VBA. Поэтому самый простой способ был бы присоединиться две строки с помощью &

x260path = "C:\..." & date 

Если функция, которую вы пытаетесь использовать, не существует в Intelli-смысле, вы можете создать свой собственный UDF или вы можете сделать некоторые онлайн-исследования о том, как работает функция и как ее переписать.

+0

Это сработало. Но теперь такая же ошибка отображается для функции CONCATENATE(). – srt

+0

@srt хорошо, да, потому что Concatenate снова активирует действительную функцию VBA. см. мой обновленный ответ –

+0

, вы сказали, что '= Concatenate' эквивалентен оператору '&' в VBA ... Как это так? .. – srt

Смежные вопросы