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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2009, 10:55   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию Ссылки из макроса без имен

Подскажите пожалуйста, можно ли прописать в макросе сслыку на ячейку без не прописывая каждяй раз имя файла.
То есть вместо
Код:
Range("G5").FormulaR1C1 = _
        "='[mp.xlsx]8.6 ses'!R9C3"
Записать
Код:
    Active.Worksheets(1).Range("E21:E22").Copy ThisWorkbook.WorksSheets(1).Range("J21").Active
    ActiveSheet.Paste Link:=True
Или что-нибудь вроде того.
Если нельзя, скажите пожалуйста. А если можно, тогда почему второй код вообще не работает? То есть ошибок при компиляции не выдает, но и действий не выполняет.
mephist вне форума Ответить с цитированием
Старый 20.07.2009, 11:00   #2
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

А если так:
Код:
Public Sub gg()
Worksheets(1).Range("E21:E22").Copy
Worksheets(1).Range("J21").Select
ActiveSheet.Paste Link:=True
End Sub
pivas вне форума Ответить с цитированием
Старый 20.07.2009, 11:08   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Или так:
Код:
Sub test()
    With ActiveWorkbook.Worksheets(1)
        ThisWorkbook.Worksheets(1).Range("J21").Formula = "=" & .Range("E21").Address(, , , True)
        ThisWorkbook.Worksheets(1).Range("J25") = "=" & .Range("G44").Address(, , , True)
    End With
End Sub
В результате получаем:
Код:
  Ячейка: J21     Формула  (стиль A1):   =[Книга2]Лист1!$E$21
                  Формула  (стиль R1C1): =[Книга2]Лист1!R21C5

  Ячейка: J25     Формула  (стиль A1):   =[Книга2]Лист1!$G$44
                  Формула  (стиль R1C1): =[Книга2]Лист1!R44C7
EducatedFool вне форума Ответить с цитированием
Старый 20.07.2009, 14:11   #4
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Спасибо большое. Мне лучше подходит код EducatedFool. Только одно маленькое уточнение.
Такое можно написать
Код:
  
ThisWorkbook.Worksheets(1).Range("J21:J25").Formula = "=" & .Range("J21:J25").Address(, , , True)
так чтобы ячейке J21 одного листа присвоилась J21 другой книги, ячейке J22 одного листа присвоилась J22 другой книги, ячейке J23 одного листа присвоилась J23 другой книги. Хотя как-нибудь это можно сделать???
Вообще код выглядит так:
Код:
With Workbooks.Open(Filename, , True)
        .Worksheets(1).Unprotect
        .Worksheets(1).Range("E9").Copy ThisWorkbook.Worksheets(1).[E9]
        .Worksheets(1).Range("E12:E13").Copy ThisWorkbook.Worksheets(1).[E12]
и вот таких присваиваний у меня море. нужно теперь перейти от значений к ссылкам. причем желательно не переписывая все это.
теперь у меня есть
Код:
With Workbooks.Open(Filename, , True)
        Worksheets(1).Unprotect
        ThisWorkbookThisWorkbook.Worksheets(1).Range("E9").Formula = "=" & ThisWorkbook.Worksheets(1).Range("E9").Address(, , , True)
        ThisWorkbookThisWorkbook.Worksheets(1).Range("E12:E13").Formula = "=" & ThisWorkbook.Worksheets(1).Range("E12").Address(, , , True)
И естественно ячейкам Е12 и Е13 присваивается значение ячейки Е12
А очень хочется Е12 присвоить Е12, а Е13 присвоить Е13. И таким образом сотным других ячеек.

Последний раз редактировалось mephist; 20.07.2009 в 14:20.
mephist вне форума Ответить с цитированием
Старый 20.07.2009, 17:45   #5
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Если это в принципе невозможно, напишите пожалуйста.
mephist вне форума Ответить с цитированием
Старый 20.07.2009, 17:49   #6
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Вам нужны значения или формулы для связи этих ячеек?
И какие диапазоны надо копировать.

Последний раз редактировалось pivas; 20.07.2009 в 17:58. Причина: Дополнение
pivas вне форума Ответить с цитированием
Старый 20.07.2009, 18:00   #7
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Уже прописано присвоение значений. Хочу перейти к присвоению ссылок, сильно не переписывая старый код.
Диапазоны: Соседние ячейки либо в одном столбце, либо в одной строке.

Последний раз редактировалось mephist; 20.07.2009 в 18:33.
mephist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстановка имен книг mephist Microsoft Office Excel 2 20.07.2009 11:16
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
Проблемы с пространствами имен z00m1e Общие вопросы C/C++ 0 29.10.2008 17:33
Вывод имен столбцов maxix БД в Delphi 2 29.09.2008 16:28
случайный выбор имен SeRhy Помощь студентам 4 26.11.2007 15:00