2013-10-25 8 views
0
Sub NewNightLetter() 
Dim NewFile As String 
WorkBookPath = Application.ActiveWorkbook.Path 
ProgramSelected = DataPuller.Home.Range("F4").Value 
Set mySource = MyObject.GetFolder(WorkBookPath & "\" & ProgramSelected) 
NewFile = ProgramSelected & "_PT Metrics_" & Format(Date, YYYYMMDD) & "xlsm" 
ActiveWorkbook.SaveAs (mySource & " \ " & NewFile) 
End Sub 

Здесь, на 4-й строке, я получаю сообщение об ошибке «Требуемый объект». И когда я его кодирую,Ошибка объекта в vba для определения значения

ProgramSelected=Workbooks(datapuller).Sheets(Home).Range("F4").Value 

Ошибка «Подзаголовок вне диапазона» ... Может ли помочь?

ответ

0

попробовать это:

Заменить эту часть вашего кода

ProgramSelected = DataPuller.Home.Range("F4").Value 

С этим:

ProgramSelected = Workbooks("DataPuller").Sheets("Home").Range("F4").Value 

или это для повышения гибкости.

Dim ws as Worksheet 

Set ws = Workbooks("DataPuller").Sheets("Home") 
ProgramSelected = ws.Range("F4").Value 

Также обратите внимание, что книга DataPuller должна быть открыта.
В противном случае вы получите ошибку Subscript Out of Range.

0

Когда вы смотрите книгу или лист по имени, заключить его с кавычками

ProgramSelected=Workbooks("datapuller").Sheets("Home").Range("F4").Value

0

Предполагая, что datapuller и Home как строку, где datapuller относится к рабочей книге имя и home ссылается на имя листа. Ниже синтаксис будет работать.

Dim datapuller As String 
    datapuller = "Book2" 

    Dim Home As String 
    Home = "sheet1" 

    ProgramSelected = Workbooks(datapuller).Sheets(Home).Range("F4").Value 
Смежные вопросы