Александр Соловей
Заглянувший
Всего сообщений: 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 кВ
|
Александр Александров
Администратор
Всего сообщений: 659
Дата регистрации: 31.05.2008
|
Создано:
13.04.2018 17:14:34
|
Здравствуйте!
Есть таблица Открыть-Потери, задайте там номинальное напряжение 110 кВ. Рассчитайте режим. Всё.
|
Александр Соловей
Заглянувший
Всего сообщений: 4
Дата регистрации: 13.04.2018
|
Создано:
03.05.2018 11:07:51
|
Цитата |
---|
Есть таблица Открыть-Потери, задайте там номинальное напряжение 110 кВ. Рассчитайте режим. Всё. |
При таких действиях в таблицу попадают суммарные потери по всем энергосистемам, включая смежные.
Мне же нужно увидеть составляющие потерь по конкретному району и уровням напряжений
|
Александр Александров
Администратор
Всего сообщений: 659
Дата регистрации: 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) приведет к значительным затратам времени как на создание, так и на выполнение самого макроса (задача подразумевает использование большого количества циклов)
|
Евгений Машалов
Администратор
Всего сообщений: 1059
Дата регистрации: 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
|
Евгений Машалов, Спасибо!
Это именно то, что мне было нужно)
|