Страница 1 из 1
Excel: проблема при открытии и активации файлов
Добавлено: 13 май 2009, 20:16
kto_tut
Необходимо скопировать инфу из файла Один в файл fName (его указывает пользователь)
Dim fName As String
With Application
fName = .GetOpenFilename
If fName = "False" Then Exit Sub
End With
Workbooks.Open Filename:=fName ' открывает выбранный файл, все нормально работает
После этого перехожу в файл Один
Windows("Один.xls").Activate ' работает
Но при переходе в файл fName
Windows(fName).Activate ' не находит уже открытый файл, причем ошибка заключается в том, что переменной fName возвращает полный путь и имя файла, а при активации нужно только имя файла (без указания пути). Как активировать файл fName? (если заменить Windows на Workbook ниче не меняется)
Я понимаю, что коряво все тут излагаю, но оч прошу, пряма-таки слезно умоляю помочь!!!!
Re: Excel: проблема при открытии и активации файлов
Добавлено: 13 май 2009, 20:32
Naeel Maqsudov
КНИГА.Name - это имя файла без пути.
Но вы можете обойтись вообще без переключения между окнами.
Код: Выделить всё
Workbooks("Книга3.xls").Sheets("Лист1").Range("A1:A10").Copy Workbooks("Книга2.xls").Sheets("Лист2").Range("A1")
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 11:34
vint
Код: Выделить всё
ошибка заключается в том, что переменной fName возвращает полный путь и имя файла
Это не ошибка так и должно быть
Попробуйте вот так
Код: Выделить всё
Dim fName As Variant
file = Application.GetOpenFilename
Workbooks.Open (file)
fName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'имя минус .XLS - 4 символа
ThisWorkbook.Activate 'активация рабочей книги
Workbooks(fName).Activate 'активация открытой книги
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 15:05
Naeel Maqsudov
Нет, просто .name. Этого достаточно.
Когда книга еще не сохранена, то это свойство возвращает имя без расшинения.
Если сохранена, то с расширением.
Но для обращения к элементы коллекции WorkBooks надо использовать точно такое имя, которое возвращается свойством Name.
Расширение откусывать не надо.
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 15:53
vint
Сначала так и сделал, но когда стал проверять в переменной указывалось расширение и соответственно ошибка при активации,поэтому и отрезал.
Странно!?
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 20:45
kto_tut
Ай, спасибо, уважаемые! Без расширения заработало!!! )) Не могли бы Вы помочь чайнику еще одним ответом? ) а со вставкой-то что не так? )
Dim fName As Variant
file = Application.GetOpenFilename
Workbooks.Open (file)
fName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'имя минус .XLS - 4 символа
ThisWorkbook.Activate 'активация рабочей книги
Sheets("Лист1").Range("c20:c23").Copy
Workbooks(fName).Activate 'активация открытой книги
Sheets("1").Range("c20").Paste
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 22:33
Naeel Maqsudov
Было бы неплохо, если бы Вы еще указали, какое сообщение об ошибке возникает и на какой строчке.
(Возможно Вы бы тогда и сами поняли в чем проблема)
А так... Ну, наверное нет в книге листа с именем "1".
Если надо обратиться к первому попавшемуся рабочему листу, то можно использовать WrokSheets(1)
PS
А не хотите попробовать все сделать 1 строкой, как я советовал в посте №2.
И буфер обмена не используется, и окна не переключаются. Все гораздо быстрее работает в результате.
Re: Excel: проблема при открытии и активации файлов
Добавлено: 14 май 2009, 22:36
vint
Код: Выделить всё
Dim fName As Variant
file = Application.GetOpenFilename
Workbooks.Open (file)
fName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'имя минус .XLS - 4 символа
Application.ThisWorkbook.Worksheets("Лист1").Range("C20:C23").Copy _
ActiveWorkbook.Worksheets(1).Range("C20")
не надо активировать и скакать по листам
Re: Excel: проблема при открытии и активации файлов
Добавлено: 15 май 2009, 08:59
kto_tut
Спасибо всем огромное! ) все работает! )