Страницы: 1
RSS
Присвоить переменной имя открытой книги из проводника и т.п.
 
Доброго времени суток!  
 
Для того, чтобы можно было работать с двумя открытыми книгами, мне необходимо 2-е переменные "Книга1" и "Книга2" (Книга1 - рабочая книга, Книга2 - любая открытая из которой черпаем информацию).  
 
Вот начало кода:  
set Книга1 = ThisWorkbook  
set Книга2 =    
 
Подскажите пожалуйста, что нужно написать после равно?!  
 
Знаю, что можно так:  
iFile = Dir(SelectedItem, vbDirectory)  
но в данном случае не подходит.  
 
P.S. Возможно снова неправильно описал свою проблему, поэтому прошу задавать вопросы, буду исправляться.
<FONT COLOR="CadetBlue">
 
http://www.planetaexcel.ru/forum.php?thread_id=16794  
тут внизу хороший вариант от EducatedFool
 
Если я правильно понял, - то так:  
 
set Книга1 = ThisWorkbook  
set Книга2 = GetAnotherWorkbook  
 
Сама функция GetAnotherWorkbook  
- здесь: http://excelvba.ru/code/GetAnotherWorkbook
 
Hugo, там все красиво, но там и названия книг известны, у меня же, имя 2-й книги - неизвестно. :(  
 
А мне ее, допустим, потом нужно закрыть макросом, без всяких поисков и т.д., например:  
Книга2.Close False
<FONT COLOR="CadetBlue">
 
Ещё раз перечитал название темы, и понял, что нифига не понял...  
 
Что в вашем понимании "открытая книга из проводника"?  
Какая разница, как и откуда она открыта?  
Или её только предстоит открыть?  
А, может, надо отобразить диалоговое окно выбора файла?  
Код для диалогового окна есть здесь: http://excelvba.ru/code/GetFileOrFolderPath
 
Если открытых книг только две, то:  
Public Sub qwe()  
Set Книга1 = ThisWorkbook  
For Each wb In Workbooks  
If wb.Name <> ThisWorkbook.Name Then  
Set Книга2 = wb  
Next  
End Sub  
ТО Hugo: пример от EducatedFool идеально подходил для Ольги. Тут другой случай. Мы втроем не понимаем чего точно хочет автор.
Я сам - дурнее всякого примера! ...
 
EducatedFool, Вы все правильно поняли в своем первом посте.  
 
"Какая разница, как и откуда она открыта?" - никакой.  
 
"А, может, надо отобразить диалоговое окно выбора файла?" - не нужно :)  
 
Спасибо большое за ответы и примеры! Буду пробовать. ;)
<FONT COLOR="CadetBlue">
 
Забыл(с коленки писал)  
после  
Set Книга2 = wb  
добавить  
End If
Я сам - дурнее всякого примера! ...
 
KuklP, спасибо Вам!  
 
P.S. можно после "Then" поставить ;)
<FONT COLOR="CadetBlue">
 
Я как-то обратил внимание на фразу "любая открытая из которой черпаем информацию" - значит название известно. Это кидать информацию можно в любую, а вот черпать имхо надо знать, откуда :)  
Ну хоть по названию листа что-то вроде (код vbs):  
==  
Dim objExcel  
 
ActivateExcel  
 
Set excelSheet1 = GetSheet(objExcel, "Example1 Sheet Name")  
 
excelSheet1.cells(1,1).value = 10 'тест  
 
msgbox excelSheet1.cells(1,1).value 'проверка  
 
Private Function ActivateExcel()  
On Error resume next    
Set objExcel = GetObject(, "Excel.Application")  
If objExcel Is Nothing Then  
Set objExcel = CreateObject("Excel.Application")  
   Exit Function  
Else  
   Exit Function  
End If  
End Function  
 
'The GetSheet method returns an Excel Sheet according to the sheetIdentifier  
'ExcelApp - the Excel application which is the parent of the requested sheet  
'sheetIdentifier - the name or the number of the requested Excel sheet  
'return Nothing on failure  
Function GetSheet(ExcelApp, sheetIdentifier) 'As Excel.worksheet  
   On Error Resume Next  
   Set GetSheet = ExcelApp.Worksheets.Item(sheetIdentifier)  
   On Error GoTo 0  
End Function
 
Может я плохо пояснил, но слово "любая" на мой взгляд - неизвестная :)  
 
А за пример спасибо!
<FONT COLOR="CadetBlue">
 
Это там выше вчера я был :)  
Погоди, как из неизвестной данные тянуть? Значит и данные неизвестно какие? Тогда зачем они?  
Имхо хоть как-то, но эта книга выше по коду будет обозначена.
 
Hugo, неизвестно только название книги, вот и все, данные известны ;)
<FONT COLOR="CadetBlue">
 
{quote}{login=ТолькоУчусь}{date=15.06.2010 12:29}{thema=}{post}Hugo, неизвестно только название книги, вот и все, данные известны ;){/post}{/quote}  
Если открыто больше двух книг, то(мой пост14.06.2010, 17:48) Set Книга2 = wb присвоится последней открытой книге. Если же делать проверку по данным в книгах с однотипными данными, то тут "на кого Бог пошлет". Нужен какой-то признак(дата например, в определенной ячейке) по которому выбирать. А у Вас получается: пойди туда, не знаю куда, принеси то...
Я сам - дурнее всякого примера! ...
 
ммм, типа такого тогда?  
 
Sub tt()  
For Each wb In Workbooks  
Debug.Print wb.FullName  
Next  
End Sub  
 
Там внутри сделать поиск известных данных по листам этих wb...  
Что-то общая задача пока неясна - чего сделать-то надо?
 
Hugo, есть Книга1 (основаная, где расположен код программы), название ее Пользователи могут менять на какое-угодно, назавем ее так: Книга1 = х. Для внесения данных в "x" нужно открыть другую книгу, Книга2 = y. Название "y" тоже не известно. Вот.  
 
Надеюсь так понятнее? :)
<FONT COLOR="CadetBlue">
 
:) ненамного.    
Вот это "нужно открыть другую книгу" как будет происходить? Если файл выбирает юзер - открывайте кодом диалог, выбор юзера закрепляете в set. Если файл надо открыть кодом без участия юзера - ну тут уж что-то надо знать, не открывать же подряд все файлы на машине и в сети :)
 
Hugo, ну если не намного, лучше удалить эту тему, а то совсем опозорился, объяснять не умею :)  
 
Да и в принципе все понял и тему закрыли модераторы, спасибо за помощь! ;)
<FONT COLOR="CadetBlue">
 
{quote}{login=ТолькоУчусь}{date=15.06.2010 04:18}{thema=}{post}Hugo, ну если не намного, лучше удалить эту тему, а то совсем опозорился, объяснять не умею :)  
Да и в принципе все понял{/post}{/quote}  
ТолькоУчусь, ну зачем Вы так? Никто же не отказывает Вам в помощи. Никто не опозорился. Наука задавать вопрос, это тоже наука. От Вас требуется только одно - определитесь, по какому признаку искать(выбирать) нужную Вам книгу. Последняя открытая из диалога? Тогда мой макрос подходит. Или какая-то(любая) из открытых? Тогда признак, иначе как - силой мысли?
Я сам - дурнее всякого примера! ...
 
ТолькоУчусь, зря Вы злитесь - действительно непонятно Ваше объяснение про любую другую книгу, название которой неизвестно. Например, четвёртую в списке, отсортированном по названию. Такое может быть? А вдруг там нет нужных данных? Ведь Вы, пробегая глазами по списку файлов, каким-то образом для себя определяете - ВОТ ЭТУ открыть нужно. Вот Вас и "пытают"... А уж привязать её к переменной - дело техники.  
Или Вас не интересует наличие/отсутствие там данных, а разговор в "в принципе"?  
Наподобие вот этого: "Как открытую и активную в данный момент книгу ...?"
Страницы: 1
Читают тему
Наверх
Loading...