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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2009, 14:10   #1
Dutch Shultz
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию ссылка на ячейку в правильном формате

Добрый день!Извиняюсь за банальный вопрос-позабыл весь Бейсик.Подскажите пож-ста как правильно скопировать ячейку cells (1,1)из файла по адресу "..." из листа 1 в ячейку cells(1,1) текущего файла(в котором стоит кнопка для запуска этого макроса) в лист 1.Заранее спасибо.
Dutch Shultz вне форума Ответить с цитированием
Старый 06.03.2009, 15:26   #2
nemoomen
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 58
По умолчанию

Workbooks("КНИГА1").Worksheets("Лис т1").Cell(1,1)=Workbooks("КНИГА2"). Worksheets("Лист1").Cell(1,1)
nemoomen вне форума Ответить с цитированием
Старый 06.03.2009, 16:00   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Код:
Sub test()
    ' скопировать вместе с форматированием
    Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1).Copy ThisWorkbook.Worksheets(1).Cells(1, 1)
    ' то же самое, только короче:
    Workbooks("КНИГА-Источник").Worksheets(1).Cells(1).Copy Worksheets(1).Cells(1, 1)    ' если файл с макросом активен
    Workbooks("КНИГА-Источник").Worksheets(1).Cells(1).Copy Cells(1, 1)    ' если 1-й лист файла с макросом активен
    Workbooks("КНИГА-Источник").Worksheets(1).Cells(1).Copy [a1]    ' если 1-й лист файла с макросом активен


    ' скопировать только значение
    ThisWorkbook.Worksheets(1).Cells(1, 1) = Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1)
    ' то же самое, только короче:
    Worksheets(1).Cells(1, 1) = Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1)    ' если файл с макросом активен
    Cells(1, 1) = Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1)    ' если 1-й лист файла с макросом активен
    Cells(1) = Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1)    ' если 1-й лист файла с макросом активен
    [a1] = Workbooks("КНИГА-Источник").Worksheets(1).Cells(1, 1)    ' если 1-й лист файла с макросом активен
End Sub
В обоих случаях КНИГА-Источник должна быть открыта.
Лучше вместо Workbooks("КНИГА-Источник") писать Workbooks("КНИГА-Источник.xls")
EducatedFool вне форума Ответить с цитированием
Старый 11.03.2009, 10:38   #4
Dutch Shultz
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

Спасибо большое!Копировать получилось,а вот ссылаться на ячейку не получается,просто на кнопку повесил следующую строку:
MsgBox (Workbooks("z:\Логисты\Общая\Monito ring\Tracking 09-test.xls").Worksheets(1).Cells(4, 2))

пишет ошибку что

Runtime error 9
Subscript out of range

Хотя у меня файл открыт открыт,имя правильно,ячейка непустая.

Помогите,пож-ста,как правильно ссылаться на ячейку в таком случае
Dutch Shultz вне форума Ответить с цитированием
Старый 11.03.2009, 10:40   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Попробуйте так:

MsgBox Workbooks("Tracking 09-test.xls").Worksheets(1).Cells(4, 2)
EducatedFool вне форума Ответить с цитированием
Старый 11.03.2009, 11:29   #6
Dutch Shultz
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

Спасибо, а почему не работает ссылка как на переменную на длинный путь к ячейке,и,например,присвеивание переменной значения ячейки:
a = Workbooks("Tracking 09-Test.xls").Worksheets(1).Cell(4, 2)
Например у меня открыты много книг в разной последовательности,и мне нужно сравнить значение Workbooks("длинный путь к файлу 2 ".Worksheets(index1).cells(i1,k 1) c Workbooks("длинный путь к файлу 2".Worksheets(index2).cells(i2,k2), не срабатывает.Я так понимаю оба файла должены быть открыты,но потом пишет ошибки.Там через объектные переменные надо делать как-то?Подскажите,пож-ста,как правильно.
Dutch Shultz вне форума Ответить с цитированием
Старый 11.03.2009, 15:12   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Спасибо, а почему не работает ссылка как на переменную на длинный путь к ячейке,и,например,присвеивание переменной значения ячейки:
a = Workbooks("Tracking 09-Test.xls").Worksheets(1).Cell(4, 2)
Правильно будет так:
a = Workbooks("Tracking 09-Test.xls").Worksheets(1).Cells(4, 2)

Цитата:
Workbooks("длинный путь к файлу 2 ".Worksheets(index1).cells(i1,k 1) c Workbooks("длинный путь к файлу 2".Worksheets(index2).cells(i2,k2), не срабатывает.
Я же приводил примеры обращения к ячейкам...
С чего Вы вообще взяли, что можно использовать "длинный путь" в качестве параметра функции Workbooks() ?

Никаких больше "длинных" имён - "только короткие", и всё будет работать.

Более подробную информацию можно найти здесь: http://msoffice.nm.ru/faq/macros.htm
EducatedFool вне форума Ответить с цитированием
Старый 11.03.2009, 18:35   #8
Dutch Shultz
 
Регистрация: 06.03.2009
Сообщений: 4
По умолчанию

Спасибо большое!
Dutch Shultz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Ссылка на ячейку в другом листе... Shavminator Microsoft Office Excel 3 23.07.2008 16:52
php в формате doc gred PHP 9 16.05.2008 14:39
Запись в БД в формате Date Cantana Помощь студентам 16 24.01.2008 11:30
Ссылка на ячейку закрытого файла tat-besidovska Microsoft Office Excel 1 18.01.2008 11:38