Консультация № 160268
12.02.2009, 10:02
0.00 руб.
0 2 1
Здравствуйте! Помогите пожайлуста в написании макроса в Excel2003. Ситуация такая: Есть Книга1. Должен быть макрос с кнопкой, по нажатию которой выполняется следующее: открываем Книга2, присваиваем переменной1 значение ячейки Книга2.А3, далее Книга2.А8=Книга1.В10+переменная2, далее изменяем переменную1 и записываем в Книга2.А3, закрываем Книга2. Желательно подробно расписанный и рабочий пример, остальное доделаю сам, давно не сталикивался с программированием, макросы не писал ни разу. Заранее спасибо.

Обсуждение

Неизвестный
12.02.2009, 12:22
общий
это ответ
Здравствуйте, Зотов В.П.!
Вот требуемый макрос. В принципе, ваша задача содержит ряд непонятных моментов, все они указаны в макросе в примечаниях.
Для того, чтобы макрос работал, его нужно сохранить в вашем файле "Книга1.xls". Для чего жмем Сервис-Макрос-Редактор VisualBasic. Потом в открывшемся окне Вставка-модуль (Insert-Module). Появится новый модуль, открываем его, вставляем код и сохраняем.
После этого с макросом пожно работать Cервис-Макрос-Макросы... и выбираем нужный (у меня он называется main).
Если хотите, можно сделать на листе кнопку. Для этого в книге "Книга1" вставляем какой-нибудь объект, например прямоугольник (Вставка-Рисунок-Автофигуры, выбираем нужную и рисуем ее), после чего щелкаем правой клавишей по этому объекту, выбираем "Назначить макрос" и там выбираем нужный макрос. После этого макрос будет запускаться при щелчке про объекту (прямоугольнику)
Ну, и понятное дело, в екселе должен стоять уровень безопасности, НЕ ЗАПРЕЩАЮЩИЙ запуск макросов.
Вот, вроде бы все. Удачи. Если нужны еще комментарии, пишите.

Приложение:
Sub main()
' 'поскольку придется использоватьнесколько книг, запоминаем имя текущей
awn = ActiveWindow.Caption
'определяем книгу, которую будем открывать.
fn = "Книга2.xls"
'примечание: имя открываемого файла можно сохранить, например, A1 на листе "лист2"
'основной книги и использовать выражение типа fn = Sheets("Лист2").Cells(i, 1).Value

'открываем открываем Книга2
Workbooks.Open Filename:=fn

'присваиваем переменной1 значение ячейки Книга2.А3
'примечание: скорее всего, имелось в виду Книга2.ЛИСТ1.А3
var1 = Workbooks(fn).Sheets("лист1").Cells(3, 1).Value
'далее Книга2.А8=Книга1.В10+переменная2
'пока переменная2 еще не встречалась, поэтому задаем ей значение
var2 = 2
Workbooks(fn).Sheets("Лист1").Cells(8, 1).Value = _
Workbooks(awn).Sheets("Лист1").Cells(10, 2).Value + var2
'далее изменяем переменную1 и записываем в Книга2.А3,
'примечание: непонятно, на что изменяем, предполагаю, что на посчитанное значение
var1 = Workbooks(awn).Sheets("Лист1").Cells(10, 2).Value + var2
Workbooks(fn).Sheets("Лист1").Cells(3, 1).Value = var1
'сохраняем Книга2
Workbooks(fn).Save
'закрываем Книга2
Workbooks(fn).Close
'активируем исходную книгу
Windows(awn).Activate
End Sub
Неизвестный
13.02.2009, 12:35
общий
run-time error '9' subscript out of range в строке var1 = Workbooks(fn).Sheets("лист1").Cells(3, 1).Value
fn (имя открываемого файла) определил, лист1 в нем есть, данные забил (в ячейки). Куда не туда лезу? Описать тип переменной? Что-то я торможу
Форма ответа