Что нового

Работа с таблицей Excel

Pic@sso

Новичок
Сообщения
7
Репутация
0
Версия AutoIt: 3.3.6.1

Описание:

Доброе время суток господа ! Помогите пожалуйста с реализацией задумки.
Идея такова: В файле Excel имеются значения в листе ИД. Необходимо произвести поиск с помощью AutoIT по 2 критериям (скважина +месторождение) , полученные данные посчитать формулами и вывести результат в форме.
в экселе я это сделал но интересует данное действие на AutoIT. Файл прилагается . там же есть и примерная UserForm, ну и кой какие скриптики по обновлению файла.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
OffTopic:
если все хорошо работает в xl, зачем использовать autoit?
 
Автор
Pic@sso

Pic@sso

Новичок
Сообщения
7
Репутация
0
Всё хорошо, да не всё хорошо ! Эксель на работе штука очень нагруженная ! Лишнее окно экселя порой вешает его напрочь. Что влечет за собой потерю времени, а иногда потерю данных. Было бы замечательно если б данная програмка на AUTOIT обновлялась только с Эксель, а остальные данные хранила либо в *txt, либо в каком нибудь другом формате.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Pic@sso,
Проверьте этот код (у меня Excel 2003).
Код:
#include <Excel.au3>

$s_FileExcel = @ScriptDir & '\Считаем глушение.xlsm'
$o_Excel = _ExcelBookOpen($s_FileExcel)
If @error Then
	MsgBox(16, 'Error', '_ExcelBookOpen')
	Exit
EndIf
For $i = 1 To 1
	_ExcelSheetActivate($o_Excel, 'ИД');
	If @error Then ExitLoop
	_ExcelBookSaveAs($o_Excel, @ScriptDir & '\ИД', 'txt')
	If @error Then ExitLoop
Next
If @error Then
	MsgBox(16, 'Error', 'Error')
Else
	MsgBox(64, 'Info', 'OK')
EndIf
_ExcelBookClose($o_Excel, 0)
Если работает, то прикрепите полученный текстовый файл и объясните, что и по каким критериям надо считать.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
т.е.
есть книга/лист excel. запускаем программу. она "забирает" данные с excel. куда-то переносит/сохраняет. выполняет свои функции/расчеты. выводит результат
ps. расчет очень долгие, тк они "убивают" excel, а вы ходите, чтобы убивало всю систему
pps. в описании не нашел конкретного ТЗ, поэтому делаю вывод, что нужно посмотреть приложенный файл и переписать vba в autoit?
 
Автор
Pic@sso

Pic@sso

Новичок
Сообщения
7
Репутация
0
вот что получилось (см. текстовик) (Единственное что шапка таблицы сместилась :smile:.Необходимо задать в GUI значения (к примеру номер скважины = 1К , месторождение=Кудринское) =1ККудринское месторождение=Кудринское №скв=1К №куста=56 Pпл=158 Hвд=2441 Удл=147 Текущий забой=2475,00 Н спуск=2100 Д эк.вн=131. ) и подставить их в формулы :

необходимо найти плотность жидкости --- "qж"= Pпл*1,05*10/(Нвд-Удл)-----
Таким образом для строки 1ККудринское вычисление будет такое ---"qж"=158*1,05*10/(2441-147)---
что касается второго расчёта то вот !

находим объём НКТ : ---"Vнкт"= 0,001165725*Н спуск---- Таким образом для 1ККудринское выражение примет вид ---"Vнкт"= 0,001165725*2100 = 2.4---

находим объём Экспл. колонны: ---Vэк=(3,14*(Д эк.вн/1000)^2/4)*Текущий забой--- Таким образом для 1ККудринское выражение примет вид --- Vэк=(3,14*(131/1000)^2/4)*2475,00 =33,1 ---


находим V жидкости глушения: ---Vж.г.=(Vэк-Vнкт)*1.1--- Таким образом для 1ККудринское выражение примет вид --- Vж.г.=(Vэк-Vнкт)*1.1= 33.8


Таким образом мы получили 2- искомые величины . Это Vж.г.=33.8 ; и qж=0.72
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Pic@sso,
Попозже попробую сделать, пока некогда.
Таким образом мы получили 2- искомые величины . Это Vж.г.=33.8 ; и qж=0.72
У меня немного другие числа получаются (Vж.г.):
Код:
$iPi = ACos(-1)

;1
$iQw = 158 * 1.05 * 10 / (2441 - 147)
MsgBox(64, 'qж', $iQw & @LF & Round($iQw, 2))

;2
$iVnkt = 0.001165725 * 2100
MsgBox(64, 'Vнкт', $iVnkt & @LF & Round($iVnkt, 2))

$iVec = ($iPi * (131 / 1000) ^ 2 / 4) * 2475.00
MsgBox(64, 'Vэк', $iVec & @LF & Round($iVec, 2))

$iVwg = ($iVec - $iVnkt) * 1.1
MsgBox(64, 'Vж.г.', $iVwg & @LF & Round($iVwg, 2))

MsgBox(64, 'ИТОГО', 'Vж.г. = ' & Round($iVwg, 2) & @LF & 'qж = ' & Round($iQw, 2))
 
Автор
Pic@sso

Pic@sso

Новичок
Сообщения
7
Репутация
0
Хм странно. Что то не то в строке с расчётом Vэк
----$iVec = ($iPi * (131 / 1000) ^ 2 / 4) * 2475.00
MsgBox(64, 'Vэк', $iVec & @LF & Round($iVec, 2))-----
Должно было получится 33.14
а у вас получилось 33.358
где то тут засада.
 

DoKel

Любитель
Сообщения
15
Репутация
0
OffTopic:
Pic@sso, "в экселе я это уже сделал" - т.е. сделал на VBA?
И, если можно, зачем это вам вообще?
 
Автор
Pic@sso

Pic@sso

Новичок
Сообщения
7
Репутация
0
Да в формулах всё нормально вроде ! Интересен тот факт что погрешность такая получается ! Это конечно же не столь критично ! А по поводу формул то я единственную формулу упростил ( точнее её постоянную часть ! )
Vнкт=(3,14*(0,073^2-0,062^2)/4)*Hсп.эцн. Остальное как есть расписал !
 
Верх