2016-09-26 4 views
0

Я пытаюсь использовать ниже код PrintWB имеет следующие значения "C:\Users\jarora\Desktop\Master Test Sheet.xlsx"VBA книга объект дает «выход за пределы ошибки»

PrintWB = .Cells(i, 1) & "\" & .Cells(i, 2) 
Workbooks(PrintWB).Sheets(Sheetname).Printout From:=Frompage, To:=Topage 

Выше линии дает мне ошибку «выход за ошибки диапазона» при обращении Объект рабочей книги.

я получаю следующее сообщение об ошибке на строке выше при ссылке на объект Workbook:

выхода за пределы ошибки

Любая помощь будет оценена очень, так как это мой последний кусок головоломки Я пытаюсь собрать вместе.

+3

Является ли ваша рабочая тетрадь «Master Test Sheet.xlsx» открытой? Потому что 'Workbooks()' является 'сборником 'всех открытых в настоящее время книг в excel. Другими словами, если эта книга не открыта, она не находится в коллекции 'Workbooks()'. Если он открыт, вы можете либо вызвать его 1 из 2 способов. По индексу или по имени. Индекс - это номер, поэтому 1 будет первой открытой книгой. Имя будет «Master Test Sheet.xlsx». Не весь адрес. – Tyeler

+1

Как вы знаете, что это не '. Таблицы (имя листа)', которые бросают ошибку? Конечно, вы можете разбить его на 2 строки. Объявите переменную рабочей книги, скажем, 'wb', затем в одной строке есть' Set wb = Workbooks (PrintWB) 'и в следующей строке есть' wb.Sheets (SheetName) .etc.' Посмотрите, какая строка вызывает ошибку. –

+0

@JohnColeman Мы знаем '. Таблицы (имя листа)' не выбрасывает ошибку, потому что 'PrintWB' в' Workbooks (PrintWB) '- это весь путь к файлу, который не является принятым форматом для' Workbooks() '. 'Workbooks()' Ищет либо номер INDEX, либо имя файла. В его случае имя файла будет '' Master Test Sheet.xlsx''. – Tyeler

ответ

1

Проблема, с которой вы сталкиваетесь, заключается в том, что вы пытаетесь распечатать книгу, которую Excel не видит. Workbooks() - коллекция всех открыть книги.

Шаг 1 открывает целевую книгу. Прежде чем мы просто откроем его, всегда лучше проверить правильность пути к файлу. Достаточно простого IF STATEMENT: If Dir(yourfilepath) <> "" Then

Шаг 2 должен открыть целевую книгу, распечатать целевой лист и закрыть книгу. Я добавил строку Workbooks(targetworkbook).Saved = True. Это скроет «Хотите сохранить изменения?» Диалог, который появляется, когда мы пытаемся закрыть книгу. Мы знаем, что мы не вносили никаких изменений, поэтому использование этого метода безопасно.

WBPath = .Cells(i, 1) & "\" & .Cells(i, 2) 
PrintWB = .Cells(i,2) 'I'm assuming this is "Master Test Sheet.xlsx" 
If Dir(WBPath) <> "" Then 
    Workbooks.Open (WBPath) 
    Workbooks(PrintWB).Sheets(Sheetname).PrintOut From:=1, To:=1 
    Workbooks(PrintWB).Saved = True 
    Workbooks(PrintWB).Close 
Else: MsgBox "File not found.", vbCritical 
End If 
+0

Whoa !! Это сработало как шарм. Спасибо, Тиелер. – user6879637

+0

Если это ответит на ваш вопрос, не могли бы вы отметить это как ответ? Рад, что смог помочь! – Tyeler

+0

@johncoleman Спасибо за просвещение. – user6879637

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

  • Нет связанных вопросов^_^