|
|
|
| есть файл
хочу в нём сделать кнопку, чтоб можно было печатать лист2 другого файла. можно такое ?
Sheets( "D:\exel\[мой файл.*]!Лист2").PrintOut не работает. ошибка 9.
или так просто нельзя а надо что-то умное придумывать ?
спасибо. | |
|
| |
|
|
|
|
| не
не из аксесса.из екселя.
аксесса на той машине, откуда запускать - нету и это страшный зверь.
а вот ексель - да, очень хорошо бы была такая кнопка.
если открывать каждый файл (так щас и делается ) - то получается долго очень(да, я понимаю, что если программно чтотоэтакоеделать - то программа всё равно будет открывать тот файл).
поэтому хочется кнопку нажал, инпутбоксом ввёл номер файла, в котором распечатать лист с определённым названием,
в мессаджбоксе нажал "да,ещё хочу", и по новой. ибо этих страниц надо напечатать из разных файлов штук 10-15-20. | |
|
| |
|
|
|
| нужно открыть нужный файл и из него распечатать | |
|
| |
|
|
|
| вроде бы так
Dim z As New Excel.Application
z.Workbooks.Open FileName:="D:\1.xlsx"
z.ActiveWindow.SelectedSheets.PrintOut Copies:=1
|
| |
|
| |
|
|
|
| ага
работает.
тока я не знаю, как выбрать нужный лист ( на воркшитс("лист2").селект ругается )
и потом файлы, которые открывались - открываются в каком-то ужасном виде. не то на весь экран, не то на половину.
спасибо.
буду искать как выбрать лист а не печатать тот, который остался выбранным при прошлом закрытии файла. | |
|
| |
|
|
|
| Попробуйте иначе:
Dim XlApp As New Excel.Application
Set WB = XlApp.Workbooks.Open FileName:="D:\1.xlsx"
WB.WorkSheets("Лист2").PrintOut Copies:=1
WB.Close
Set WB = XlApp.Workbooks.Open FileName:="D:\2.xlsx"
WB.WorkSheets("Лист1").PrintOut Copies:=2
WB.WorkSheets("Лист2").PrintOut Copies:=1
WB.Close
XlApp.Quit
|
| |
|
| |
|
|
|
| СПАСИБО!
на всякий пожарный написал Dim WB As Workbook
и да, в такой трактовке не получилось почему-то написать FileName:=...
просто Оpen("путькфайлу\имяфайла") - сработало.
спасибо всем, что отвечаете на столь простые вопросы ! | |
|
| |
|
|
|
|
и да, в такой трактовке не получилось почему-то написать FileName:=...
просто Оpen("путькфайлу\имяфайла") - сработало.
|
ИМХО, сработало б, если Set WB = XlApp.Workbooks.Open(FileName:="D:\1.xlsx") - в такой трактовке скобки нужны. | |
|
| |
|
|
|
| f зачем в такой трактовке писать слово filename ? ведь это же первый аргумент, можно и опустить, тем более наглядно видно, что это . или жетательно и сокрыта какая-то хитрость ? | |
|
| |
|
|
|
|
или жетательно и сокрыта какая-то хитрость ?
|
Никакой хитрости...
Коллега пожаловался, что так не получилось, а я уточнил, что из-за скобок.
Сам редко пользуюсь именованными аргументами. | |
|
| |
|
|
|
| возникла неожиданная проблема :
имя файла всегда - число(номер ТЗ), но иногда бывают добавки типа "14-СРОЧНО"
в excel2007 я добавил звёздочку в строковую переменную, в которую собирается адрес местоположения файла: spath = spath & Trim(Str(iTZ)) & "*.xls" и всё работает и с "длинными" названиями файла и с "короткими".
а в excel2003 почему-то при наличии звёздочки ругается, что не может найти файл
в строке Set WB = XlApp.Workbooks.Open(spath)
что-то надо специальное написать для excel2003 или потанцевать с бубном над переменной spath?
(правда пока не представляю, как именно плясать).
спасибо. | |
|
| |
|
|
|
| Т.е. в excel2007 метод Workbooks.Open сам выполняет поиск файла по шаблону? Не знал.
Классический способ поиска файла(ов) по шаблону - функция Dir | |
|
| |
|
|
|
| и то верно
извиняюсь. всё заработало и там и сям )
эх, и чо я не пошёл в программисты после инстута... | |
|
| |
|
|
|
| а можно ещё тогда убрать вопрос "сохранить изменения в файле таком_то ?"
чтоб просто печатало и не спрашивало ничего.
в аргументах принт_аут вроде такого нет | |
|
| |
|