На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 66851265
7368
Hosts 3525150
1290
Visitors 53087480
7191

65


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Макрос по выборке составляющих потерь » в форуме: Макро   Просмотров: 7432
 
Александр Соловей
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 13.04.2018
Создано: 13.04.2018 15:58:09
 
 
Здравствуйте, нужна помощь в написании макроса в VBA Excel

Задача следующая: нужно вывести в Excel потери по составляющим (нагрузочные в ВЛ, Тр-рах, потери ХХ и т.д.)

В программе RastrWin для этого предусмотрена таблица "Районы+Потери" после выполнения макроса "Номинальные напряжения".

При этом данная таблица формируется программно, поэтому вытянуть данные из нее напрямую никак не получается.
Если по нагрузочным потерям в линиях и трансформаторах у меня кое как получилось вытянуть значения из таблицы ветвей (пример кода для 330 кВ ниже),

n1 = Rastr.calc("sum", "vetv", "dp" , "(na=701 | ip.na=701 | iq.na=701) & ip.uhom<300")
Get_Poteri_Rastr_330 = Rastr.calc("sum", "area", "dp", "na=701") - n1


то с потерями ХХ в трансформаторах возникают затруднения. Подскажите (либо приведите пример кода) как можно получить величину ХХ в трансформаторах на уровне 110 кВ
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 657
Дата регистрации: 31.05.2008
Создано: 13.04.2018 17:14:34
 
 
Здравствуйте!

Есть таблица Открыть-Потери, задайте там номинальное напряжение 110 кВ. Рассчитайте режим. Всё.
 
Профиль
Наверх
Александр Соловей
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 13.04.2018
Создано: 03.05.2018 11:07:51
 
 
Цитата
Есть таблица Открыть-Потери, задайте там номинальное напряжение 110 кВ. Рассчитайте режим. Всё.


При таких действиях в таблицу попадают суммарные потери по всем энергосистемам, включая смежные.
Мне же нужно увидеть составляющие потерь по конкретному району и уровням напряжений
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 657
Дата регистрации: 31.05.2008
Создано: 03.05.2018 12:02:29
 
 
Заведите доп нумерацию для каждого уровня напряжений, проще всего через CSV файл.

Для "узлов":
НомерУзла;НомерРайона(110­,220,330,500)

Для "Районов":
Номер района(110,220,330,500);

После загрузки подобных CSV у Вас получаться новые районы
с разбитием на уровни напряжений и в таблице Районы выведите скрытые колонки с соответствующими потерями.
 
Профиль
Наверх
Александр Соловей
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 13.04.2018
Создано: 03.05.2018 14:13:39
 
 
Предложенный вами вариант не совсем рационален с учетом того, что программа RastrWin позволяет с помощью таблицы "Районы+Потери" вывести разбивку потерь ХХ по напряжениям (скриншот https://yadi.sk/i/uBhk-H_­r3VE4AW)

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

Дополнительное создание и загрузка CSV файлов, особенно через сторонние программы (VBA Excel) приведет к значительным затратам времени как на создание, так и на выполнение самого макроса (задача подразумевает использование большого количества циклов)
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1042
Дата регистрации: 23.04.2007
Создано: 03.05.2018 14:55:03
 
 
Код
Set area = Rastr.Tables("area")
Set ptr = Rastr.Tables("poteri")
Set ptrTmp = ptr.Cols("_tmp")
Set areaNa = area.Cols("na")
Set ptrUhom = ptr.Cols("uhom")
Set areaName = area.Cols("name")
for na = 0 to area.Size - 1
    for ptrx = 0 to ptr.Size - 1
        ptrTmp.Z(ptrx) = areaNa.Z(na)
    next
    for ptrx = 0 to ptr.Size - 1
        Set spNodeCheck = Rastr.Tables("node")
        spNodeCheck.SetSel "uhom~" & ptrUhom.Z(ptrx) & "&na=" & ptrTmp.Z(ptrx)
        if spNodeCheck.FindNextSel(-­1) >= 0 Then
            Set spdatran = ptr.Cols("spa_tran")
            Rastr.PrintP areaName.Z(na) & " " & ptrUhom.Z(ptrx) & " " & spdatran.Z(ptrx)
        End If
    next
next
 
Профиль
Наверх
Александр Соловей
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 13.04.2018
Создано: 03.05.2018 15:18:32
 
 
Евгений Машалов, Спасибо!

Это именно то, что мне было нужно)
 
Профиль
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019