Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2011, 18:07   #1
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

книга открыта, но почему-то код не работает
gramp вне форума Ответить с цитированием
Старый 15.07.2011, 20:36   #2
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию Как получить данные из одной открытой книги в другую?

С ходу разобраться не смог.
Пробовал сделать так
Код:
Sub tessstt()
    Dim rt As String: rt = Workbooks("110.xlsm").Sheets("11").Range("a1").Value
    Worksheets("22").Range("a1").Value = rt
End Sub
Вместо 110.xlsm пробовал прописывать весь путь к файлу, все равно не прет.
Или подобное простое решение не будет работать вообще и надо чтото делать с объектами?
gramp вне форума Ответить с цитированием
Старый 15.07.2011, 21:14   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

метод обращения типа Workbooks("110.xlsm") подходит, если книга уже открыта.
Если файл закрыт - то его надо сначала открыть, а потом обращаться к нему:

Код:
Sub tessstt()
    Workbooks.Open "c:\ПолныйПуть...\110.xlsm"
    Dim rt As String: rt = Workbooks("110.xlsm").Sheets("11").Range("a1").Value
    Worksheets("22").Range("a1").Value = rt
End Sub
PS: Есть способы считывания значения ячейки БЕЗ открытия книги
(примеров на форуме множество)
EducatedFool вне форума Ответить с цитированием
Старый 16.07.2011, 12:28   #4
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
метод обращения типа Workbooks("110.xlsm") подходит, если книга уже открыта.
Если файл закрыт - то его надо сначала открыть, а потом обращаться к нему:

Код:
Sub tessstt()
    Workbooks.Open "c:\ПолныйПуть...\110.xlsm"
    Dim rt As String: rt = Workbooks("110.xlsm").Sheets("11").Range("a1").Value
    Worksheets("22").Range("a1").Value = rt
End Sub
PS: Есть способы считывания значения ячейки БЕЗ открытия книги
(примеров на форуме множество)
если не сложно, подскажите, почему может не работать код с открытой книгой?
пишет - субскриб оф ранже
gramp вне форума Ответить с цитированием
Старый 16.07.2011, 12:53   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А у Вас листы точно называются "11" и "22"? Или Вы так пытаетесь по порядковому номеру обратиться?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 16.07.2011, 13:02   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

потому что макросы выполняют не то, о чем Вы думаете, а то, что вы написали...

предположу, что в книге 110.xlsm нет листа 22.
продолжу выдвигать гипотезы: думаю, Вы хотели хотели значение rt положить в А1 на лист 22 текущей книги, той из которой этот макрос стартует. угадал?

если угадал, тогда:
thisworkbook.Worksheets("22").Range ("a1").Value = rt
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 16.07.2011 в 13:27.
IgorGO вне форума Ответить с цитированием
Старый 16.07.2011, 13:06   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Игорь, привет. Ты чего, на Эсперанто, или Санскрит перешел?:-) Ни фига же не понятно.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 16.07.2011, 13:16   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Можно без промежуточной переменной (если не надо менять тип данных):
Код:
Sub tst()
ThisWorkbook.Sheets("22").Range("A1") = Workbooks.Open("c:\ПолныйПуть...\110.xlsm").Sheets("11").Range("A1")
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.07.2011, 13:25   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

кажись одновременно... на оба...
исходя из изотропности простравнства - каждый индивидуум интерпретирует вербальные сентенции оппонента, основываясь на собственном эгоцентрическом восприятии материального...

так-то оно по-понятнее будет?
Серега, извини я консерваториев на заканчивал, поэтому изьясняюсь, как могу.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 16.07.2011 в 13:33.
IgorGO вне форума Ответить с цитированием
Старый 22.07.2011, 09:42   #10
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

На самом деле все листы с правильными названиями присутствуют в книгах.
Если точнее, то суть вопроса в следующем - очень неудобно, когда в одном окне открываются все книги (особенно когда их несколько). Кроме того, при работающем в екселе скрипте открытие еще одной книги приводит к тому, что скрипт ищет воркшит именно в активной сейчас книге.
Чтобы такого не было, во вкладке "дополнительно" параметров екселя из офиса 2010 я поставил галочку "игнорировать запросы DDE от других приложений". В этом случае все книги открываются, как отдельные окна и скрипт работает без ошибок. Но - именно эта опция приводит к тому, что данные между книгами не передаются.
Если эту галочку отключить, то все хорошо - из открытой другой книги данные вполне доступны для скрипта другой книги.
Вопрос - можно ли при включенной галочке "игнорировать запросы DDE от других приложений" каким-то образом получать данные из одной книги в другую или, может быть, есть возможность сделать так, чтобы можно было открывать книги в отдельных окнах без включения этой галочки?
gramp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать определенные листы из одной книги в другую? Toffifee Microsoft Office Excel 32 20.05.2011 12:25
как копировать данные из одной таблоицы в другую MixanMM БД в Delphi 3 30.07.2010 10:47
Как скопировать данные таблицы из одной базы access в другую? AK BULLETS БД в Delphi 2 31.03.2010 13:09
Как с помощью SQL перенести данные из одной таблицы в другую lenuxoid БД в Delphi 1 23.04.2009 20:45
как из одного одной книги экспортировать данные на другой лист mabru Microsoft Office Excel 11 07.01.2009 10:20