Макрос для создания WCONHIST для Eclipse

Дано: Visual Basic for Applications в Excel 2007. Окна с данными в разных форматах (200.xls, 201.xls, dates.xlsx), выгруженными из ГиДа (МЭР).
Надо получить: таблицу с данными из остальных окон в конкретном формате, подходящем для файла секции schedule в Eclipse.
Пускай макрос подходит для одного конкретного случая, цель не в создании универсального кода, а в выборе подходящих команд, позволяющих при необходимости быстро «допилить» макрос до большей производительности.

Самые нужные мне команды:
Windows(«ляляля.xls»).Activate — активирует окно «ляляля».
ActiveCell.Value = «ляляля» — записывает в активную ячейку «ляляля».
ActiveCell.Offset(1, 3).Select — выбирает ячейку со сдвигом на 1 строку вниз и 3 столбца вправо.
ActiveSheet.Range(«A1:B4»).Offset(5, 7).Select — выбирает диапазон размером 4 строки * 2 столбца, но со сдвигом на 5 строк вниз и 7 строк вправо.
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False — специальная вставка только значений ячеек.
Application.CutCopyMode = False
Selection.Copy — копирование без вырезания.
Цикл со счетчиком:
For i = 1 To 121
(ляляля)
Next i

В общем, всё просто. А вот и сам макрос (с комментариями).

Sub wconhist()

‘ wconhist Макрос

For i = 1 To 132
‘ количество месяцев в 11 годах; шедел делается ежемесячно
Windows(«sch.xlsm»).Activate
‘ удостовериться, что целевое окно активно
ActiveCell.Value = «WCONHIST»
‘ вводим текст WCONHIST
ActiveCell.Offset(1, 0).Select
‘ СДВИГ НА ЯЧЕЙКУ НИЖЕ
Windows(«200.xls»).Activate
‘ переключаемся на окно с данными
ActiveSheet.Range(«V133:AF133»).Offset(-i, 0).Select
‘ сдвигаем диапазон ячеек на нужное место
Application.CutCopyMode = False
Selection.Copy
‘ копируем его
Windows(«sch.xlsm»).Activate
‘ переключаемся на целевое окно
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
‘ вставляем только цифры
ActiveCell.Offset(1, 0).Select
‘ сдвиг на ячейку ниже
Windows(«201.xls»).Activate
‘ всё то же самое с другим окном
ActiveSheet.Range(«W133:AG133»).Offset(-i, 0).Select
Application.CutCopyMode = False
Selection.Copy
Windows(«sch.xlsm»).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(1, 0).Select
‘ всё то же самое с другим окном закончилось
ActiveCell.Value = «‘/»
‘ вставляем текст
ActiveCell.Offset(1, 0).Select
‘ на ячейку ниже
ActiveCell.Value = «DATES»
‘ снова текст
ActiveCell.Offset(1, 0).Select
‘ на ячейку ниже
Windows(«dates.xlsx»).Activate
‘ переходим в последнее окно
ActiveSheet.Range(«A1:D1»).Offset(i, 0).Select
‘ сдвигаем выбираемый диапазон
Application.CutCopyMode = False
Selection.Copy
‘ копируем
Windows(«sch.xlsm»).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
‘ вставляем только значения
ActiveCell.Offset(1, 0).Select
‘ на ячейку ниже
ActiveCell.Value = «‘/»
‘ текст
ActiveCell.Offset(2, 0).Select
‘ на две ячейки ниже
Next i

‘ и так 132 раза

End Sub

About Vladlena

Привет! Чаще всего я занимаюсь геологическим моделированием, но бывают и другие интересные вещи :)
This entry was posted in Без рубрики and tagged , , , , . Bookmark the permalink.

3 Responses to Макрос для создания WCONHIST для Eclipse

  1. Айнура says:

    А у нас есть замечательная программка, которая выгружает уже готовые скедьюалы 🙂
    Наши местные программисты писали 🙂
    Кстати, все же полезная статья 🙂

    • Vladlena says:

      Спасибо 🙂 она их откуда выгружает? Я-то брала МЭР из ГиДа. И кстати, сравнивала с шеделом из готовой модели по тому же объекту — не сходится почему-то.
      Но от программки бы не отказалась, да 🙂

      • Айнура says:

        Наша программка выгружает их из нашей какой-то внутренней базы.
        А с ГиДовскими значениями они и не будут, на сколько я знаю, сходиться. Ибо там что-то куда-то пересчитывается еще…
        А программка, наверное, работает только в рамках нашего института и подцепляет наши базы…хотя я не уверена…можно попробовать спросить.. 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

JSantispam

В Вашем браузере отключена поддержка JavaScript! Для корректной работы Вам необходимо включить поддержку JavaScript и обновить данную страницу.