Prueba 2 2
Prueba 2 2
Prueba 2 2
ECUADOR
FACULTAD DE INGENIERÍA EN GEOLOGÍA, MINAS,
PETRÓLEOS Y AMBIENTAL
ESCUELA DE INGENIERÍA DE PETRÓLEOS
COMPUTACIÓN APLICADA
Nombre: Anderson Alberto Jiménez Fecha: 11/1/2017
Landa
Curso: Sexto Docente: Ing. Néstor Valdospinos
C.Ms. Sc
Tema: PRUEBA SEGUNDO HEMISEMESTRE: MACRO PARA REALIZAR
LOS CÁLCULOS HIDRÁULICOS EN EL MOVIMIENTO DEL PETRÓLEO
POR UNA TUBERÍA
1.-Objetivos
EXCEL
Sub MiPrimerMacro()
Cells.Clear
El primer comando Cells.Clear borra todo dato y hace que la hoja quede en blanco totalmente.
Dim n, ingresocuadal, ingresodiam, ingresotem As String
Se ingresan las siguientes variables luego del Dim y se las define como variables tipo
cadena, es decir, alfanumérica.
Dim caudal, caudales, diametro, diametrom, seccionplg, seccionmc, velocidad,
velocidadmps, temperaturaf, temcent, temfarh, viscosidadc, pespecifico As Double
Se ingresan las siguientes variables luego del Dim y se las define como variables tipo
numéricas con decimales.
MsgBox "INICIO DE LOS CÁLCULOS HIDRÁULICOS" & Chr(13) &
"BIENVENIDOS", , "INICIANDO"
La función MsgBox crea una ventana, en este caso dando la bienvenida al usuario y
señalando que se ha inicializado el macro.
Do
n = InputBox("Para ingresar el caudal en barriles por día escriba BPPD " & Chr(13)
& "o en metros cúbicos por segundo escriba MCPS ", "UNIDADES DEL CAUDAL")
ingresocaudal = n
Loop Until (ingresocaudal = "BPPD" Or ingresocaudal = "bppd" Or ingresocaudal =
"MCPS" Or ingresocaudal = "mcps")
Se usa la función Do para ejecutar un proceso cíclico, en este caso se abrirá una ventana
la cual se usa para pedir al usuario que ingrese las unidades del caudal del fluido, ya sea
en barriles por día, utilizando la abreviatura de “BPPD”; o en metros cúbicos por segundo,
usando la abreviatura de “MCPS” . Las abreviaturas se las usa con el fin para que al
usuario no le sea tedioso la escritura completa de las unidades del caudal a usar. Las
abreviaturas que use el usuario se las almacenara en la variable alfanumérica n, definida
al inicio del macro y posteriormente dicha valor se pasa a la variable ingesocaudal . Para
salir del Do se usa la función Loop Until, en la cual se determina la condición para salir.
En este caso la condición es que ya no se cumpla, si el usuario ingresa las abreviaturas
propuestas ya sean en mayúsculas o minúsculas.
If ingresocaudal = "BPPD" Or ingresocaudal = "bppd" Then
Se utiliza la función condicional If, es decir se usa para que el macro realice un proceso
específico si se cumple una condición, en este caso si en la variable ingresocaudal tiene
almacenado el valor “BPPD” o “bppd”.
caudal = InputBox("Ingresar el caudal en " & Chr(13) & "BARRILES POR DIA",
"INGRESO DEL CAUDAL EN BARRILES POR DÍA")
Si el usuario ingreso dichos valores el macro procede a preguntarle con una ventana el
valor del caudal en Barriles por Día, el valor ingresado se almacena en la variable
numérica caudal.
Range("d3").Value = caudal
Range("d3").Font.Bold = True
Range("d3").Font.Color = RGB(0, 255, 0)
caudalmc = caudal * (3.785 * 42) / (1000 * 86400)
MsgBox "El caudal en m3/s es =" & caudalmc, , "SALIDA DE RESULTADOS"
Range("j3").Value = caudalmc
Range("j3").Font.Bold = True
Range("j3").Font.Color = RGB(0, 255, 0)
Posterior a eso dicho variable es escrita en la celda D3 en negrillas y con el color RGB
(0, 255, 0), que es el color verde (este color se lo usara para todos los valores numéricos).
Luego de eso se usa el valor de la variable caudal que está en las unidades de Barriles
por Día y por factores de conversión se transforma dicho valor para que este en unidades
de Metros Cúbicos por Segundo, ese valor se lo guarda en la variable numérica caudalmc.
Después se hace brotar una ventana que indique el valor calculado del caudal en Metros
Cúbicos por Segundo. Para finalizar se hace que dicho valor se situé en la celda J3 en
negrillas y de color verde.
ElseIf ingresocaudal = "MCPS" Or ingresocaudal = "mcps" Then
El Elseif es la función que indica que se debe cumplir una condición específica para
realizar un proceso, en este caso que la variable ingresocaudal sea igual a MCPS o mcps.
caudalmc = InputBox("Ingrese el caudal en " & Chr(13) & "METROS CÚBICOS
POR SEGUNDO", "INGRESO DEL CAUDAL EN METROS CÚBICOS POR
SEGUNDO")
Si cumple la función condicional Elseif, procede a realizar un proceso parecido al anterior
empero en este caso la ventana que saldrá pedirá el caudal en Metros Cúbicos por
Segundo y se almacenara este valor en la variable caudalmc.
Range("j3").Value = caudalmc
Range("j3").Font.Bold = True
Range("j3").Font.Color = RGB(0, 255, 0)
caudal = caudalmc * (1000 * 86400) / (3.785 * 42)
MsgBox "El caudal en BPPD es =" & caudal, , "SALIDA DE RESULTADOS"
Range("d3").Value = caudal
Range("d3").Font.Bold = True
Range("d3").Font.Color = RGB(0, 255, 0)
En la celda J3 se escribe el valor de la variable numérica caudalmc, este valor estará en
negrillas y de color verde. Con este valor del caudal en Metros Cúbicos por Segundo se
procede a calcular el valor del caudal en las unidades de Barriles por Día, por medio de
los respectivos factores de conversión. El valor encontrado se lo pondrá en la variable
numérica caudal y la celda D3 en color verde y negrillas.
End If
Para indicar que se cierra la función If, se usa el End If
Se realiza el proceso anterior de la misma manera solo que esta vez se solicita al usuario
ingresar los datos referentes al diámetro.
Do
n = InputBox("Para ingresar el diámetro en Pulgadas escriba PLG" & Chr(13) & "o
en Metros escriba M", "UNIDADES DEL DIÁMETRO")
ingresodiam = n
Loop Until (ingresodiam = "PLG" Or ingresodiam = "plg" Or ingresodiam = "M" Or
ingresodiam = "m")
De igual manera que antes se usa la función repetitiva Do, para que se despliegue una
ventana la cual pida al usuario ingresar las unidades del diámetro, se usa las abreviaturas
PLG para pulgadas o M para metros, dicho valor alfanumérico va a la variable n que luego
se la almacena en la variable alfanumérica ingresodiam. El ciclo repetitivo va a concluir
cuando el usuario ingrese las abreviaturas para el diámetro indicadas previamente ya sea
en mayúsculas o minúsculas.
Range("d4").Value = diametro
Range("d4").Font.Bold = True
Range("d4").Font.Color = RGB(0, 255, 0)
diametrom = diametro * 0.0254
MsgBox "El diámetro en Metros es =" & diametrom, , "SALIDA DE RESULTADOS"
Range("j4").Value = diametrom
Range("j4").Font.Bold = True
Range("j4").Font.Color = RGB(0, 255, 0)
Si llega a cumplir la condición el macro procederá a desplegar una ventana donde solicite
al usuario el valor del diámetro en pulgadas y se almacenara dicho valor en la variable
numérica diametro. Luego esta variable se la presentara en la celda D4 en negrillas y
verde. Con dicho valor en la variable diametro en pulgadas se utiliza el respectivo factor
de conversión para transformar a un valor en metros y almacenar ese valor en la variable
numérica diametrom.Ese valor encontrado en metros del diámetro será expuesto en una
ventana y posteriormente se lo colocara en la celda J4 en negrillas y verde.
Range("j4").Value = diametrom
Range("j4").Font.Bold = True
Range("j4").Font.Color = RGB(0, 255, 0)
diametro = diametrom / 0.0254
MsgBox "El diámetro en Pulgadas es =" & diametro, , "SALIDA DE RESULTADOS"
Range("d4").Value = diametro
Range("d4").Font.Bold = True
Range("d4").Font.Color = RGB(0, 255, 0)
End If
Se procede a abrir una ventana en la cual se solicita ingresar al usuario el valor del
diámetro en metros, este valor se guarda en la variable numérica diametrom. Posterior a
eso dicha variable se presenta en la celda J4 en negrillas y verde. Con dicho valor en la
unidad de metros, se utiliza el factor de conversión correspondiente para encontrar el
valor numérico en pulgadas. Este valor se lo guarda en la variable numérica diametro,
luego se abre una ventana indicando el valor del diámetro en pulgadas encontrado.
Después en la celda D4 se inserta la variable diámetro en negrillas y verde. Para finalizar
el proceso de la función condicional se usa el End If.
'Calcular el área en pulgadas cuadradas y en metros cuadrados
'INGRESAR DE LA TEMPERATURA
Range("a9").Value = "LA TEMPERATURA EN GRADOS CENTIGRADOS DEL
PETRÓLEO ES "
Range("a9").Font.Bold = True
Range("a9").Font.Color = RGB(0, 100, 200)
Range("f9").Value = "LA TEMPERATURA EN GRADOS FARENHEIT ES"
Range("F9").Font.Bold = True
Range("F9").Font.Color = RGB(0, 100, 200)
En la celda A9 se procede a ingresar el texto LA TEMPERATURA EN GRADOS
CENTIGRADOS DEL PETRÓLEO ES, en negrillas y de color celeste. Con estas
mismas características se ingresa en la celda F9 el texto LA TEMPERATURA EN
GRADOS FARENHEIT ES.
30
Este número nos servirá como anclaje para la función repetitiva Go to que se utilizara
después. De esta manera cuando se pase por dicha función el macro comenzara a correr
otra vez desde este punto.
Do
n = InputBox("Para ingresar la Temperatura en Grados Centígrados escriba CENT"
& Chr(13) & "Si desea Ingresar en Grados Fahrenheit escriba FAR", "INGRESO DE
LAS UNIDADES DE LA TEMPERATURA")
ingresotem = n
Loop Until (ingresotem = "CENT" Or ingresotem = "cent" Or ingresotem = "far" Or
ingresotem = "FAR")
Se usa la función repetitiva Do, con lo cual se abre una ventana solicitando ingresar las
unidades de temperatura a usar. Si desea grados Centígrados debe escribir el usuario la
abreviación CENT, y si desea grados Fahrenheit debe ingresar la abreviación FAR. Estos
valores serán almacenados en la variable alfanumérica n, que luego será guardada en la
variable alfanumérica ingresotem. La función según el Loop Until terminara cuando el
usuario ingrese las abreviaciones previstas ya sean en minúsculas o mayúsculas.
temfarh = temcent * 9 / 5 + 32
MsgBox "la Temperatura en Grados Fahrenheit es =" & temfarh, , "SALIDA DE
RESULTADOS"
Range("j9").Value = temfarh
Range("j9").Font.Bold = True
Range("j9").Font.Color = RGB(0, 255, 0)
Con la variable numérica temcent que contiene el valor de la temperatura en grados
centígrados, se pasa a realizar las debidas conversiones para encontrar la temperatura en
grados Fahrenheit; este valor se lo guarda en la variable numérica temfarh. Posterior a
eso se abre una ventana la cual indica el valor encontrado de la temperatura en grados
Fahrenheit. Luego en la celda J9 se inserta el texto de la variable temfarh, de color verde
y negrillas.
Else
MsgBox "Ingrese la temperatura entre el rango de 38 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
Si dicha temperatura en grados centígrados no se encuentra en ninguno de esos rangos,
se utiliza el Else, para que se abra una ventana indicando que el usuario ingreso una
temperatura fuera del rango predefinido. Posterior se usa la función Go to, que sirve para
re direccionarnos al anclaje, en este caso el número 30. Con esto el usuario otra vez debe
repetir el proceso desde dicho anclaje, que es justamente el ingresar la temperatura. Así
se asegura que el usuario ingrese una temperatura correcta y pueda seguir utilizando el
macro.
End If
Else
MsgBox "Ingrese la temperatura entre el rango de 30 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de 30 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de 0 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -10 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -20 hasta 150 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -30 hasta 130 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -40 hasta 100 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -30 hasta 80 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -40 hasta 70 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -30 hasta 50 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -40 hasta 40 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -30 hasta 30 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
Else
MsgBox "Ingrese la temperatura entre el rango de -40 hasta 10 GRADOS
CENTIGRADOS" & Chr(13), , "INGRESAR NUEVAMENTE LA TEMPERATURA"
GoTo 30
End If
End If
‘Peso específico
Range("E14").Value = "Kg/m3"
Range("E14").Font.Bold = True
Range("E14").Font.Color = RGB(0, 0, 255)
En la celda E14 se ubica las unidades en las cuales está el peso específico del
petróleo con negrillas y en color verde.
‘VISCOSIDAD DINAMICA
Dim Vdinamica, Nreynolds As Double
‘MATERIAL DE TUBERÍA
Dim r As String
Dim Rugosidad As Double
Range("a21").Value = "EL MATERIAL DE LA TUBERÍA ES"
Range("a21").Font.Bold = True
Range("a21").Font.Color = RGB(0, 0, 255)
r = InputBox("Ingrese material de la tubería" & Chr(13) & "VIDRIO = 1" &
Chr(13) & "COBRE = 2" & Chr(13) & "PLÁSTICO = 3" & Chr(13) & "HULE = 4"
& Chr(13) & "HIERO FUNDIDO NUEVO = 5" & Chr(13) & "HIERRO FUNDIDO
SEMIOXIDADO = 6" & Chr(13) & "HIEROO FUNDIDO OXIDADO = 7" &
Chr(13) & "CEMENTO LISO = 8" & Chr(13) & "ACERO = 9" & Chr(13) &
"CONCRETO = 10", "SELECCION DEL MATERIAL DE LA TUBERÍA")
r = Val(r)
Se declaran dos variables una de tipo alfanumérico que es r y una de tipo numérico que
es rugosidad, luego en la casilla A21 se coloca el texto EL MATERIAL DEL LA
TUBERIA ES en color azul y en negrilla. Luego con el comando InputBox se crea un
cuadro de texto donde se selecciona el tipo de material puesto que si el usuario ingresa 1
el material es vidrio y así para cada uno de los materiales de tubería los cuales son
vidrio,cobre,plástico,hule,hierro fundido nuevo ,hierro fundido semioxidado ,hierro
fundido oxidado, cemento liso, acero y concreto.
Range("f21").Value = "LA RUGOSIDAD ABSOLUTA ES"
Range("F21").Font.Bold = True
Range("F21").Font.Color = RGB(0, 0, 255)
If r = 1 Then
Range("d21").Value = "VIDRIO"
Range("d21").Font.Bold = True
Range("d21").Font.Color = RGB(0, 255, 0)
Rugosidad = 0.0000015
Con el comando if en el valor ingresado si fue 1 el material es vidrio y este texto se
coloca en la casilla D21 con color verde y negrilla asi como en la celda F21 el texto LA
RUGOSIDAD ABSOLUTA ES del mismo modo en negrilla y color azul , la variable
antes declarada rugosidad se le da el valor de 0.00000015 y se escribe el valor en la
celda J21 con verde y en negrilla.
ElseIf r = 2 Then
Range("d21").Value = "COBRE"
Range("d21").Font.Bold = True
Range("d21").Font.Color = RGB(0, 255, 0)
Rugosidad = 0.0000015
Con el comando elseif en el cual si no cumple que r=1 sino que es r=2 es el siguiente
material y así hasta el número de materiales que se tiene siguiendo el mismo
procedimiento que se mencionó anteriormente.
'El material de la tubería es Plástico
ElseIf r = 3 Then
Range("d21").Value = "PLÁSTICO"
Range("d21").Font.Bold = True
Range("d21").Font.Color = RGB(0, 255, 0)
Rugosidad = 0.0000015
Range("j21").Value = Rugosidad
Range("j21").Font.Bold = True
Range("j21").Font.Color = RGB(0, 255, 0)
Columna1 = 10
Columna2 = 11
Fila1 = 30
Fmedio = 0.01
Cells(29, Columna1).Value = "F asumido"
Cells(29, Columna1).Font.Bold = True
Cells(29, Columna1).Font.Color = RGB(255, 0, 0)
Cells(29, Columna2).Value = "F calculado"
Cells(29, Columna2).Font.Bold = True
Cells(29, Columna2).Font.Color = RGB(255, 0, 0)
4.- CONCLUSIONES
5.- Recomendaciones
Tener mucho cuidado al momento de transcribir en el MACRO las
ecuaciones obtenidas de la interpolación de la gráfica de viscosidades
en función de la temperatura. Puesto que es en este punto se cometen
los errores humanos los que pueden causar variaciones de los valores
calculados, dando viscosidades negativas o error.
Revisar los valores de los factores de conversión de unidades y las
formulas empleadas, puesto que al momento de la escritura se puede
cometer errores que luego hacen obtener en el MACRO valores
totalmente erróneos.
6.-BIBLIOGRAFÍA