Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas

jueves, 16 de febrero de 2012

Conectar excel con SAP

A continuacion una macro con la que desde excel se conecta a sap a una funcion z
la cual tiene que estar marcada en atrubibutos como RFC, en este ejemplo nomandamos parametros solo obtenemos los 10 primeros registros de la tabla KNA1 y los mostramos en el excel.



Sub Conectar()


Dim R3 As Object

Dim MyFunc As Object

' Parametros para exportar a la función RFC

Dim PI_CODIGO As Object

' Tablas para exportar a la función RFC

Dim PT_TABLA As Object

' Tablas para importar de la función RFC

Dim PT_OUTPUT As Object

' Resultado de la conexión con SAP

Dim Result As Boolean

' Otras variables

Dim iRow, iRowAux As Integer

'************************************************************************

' Flujo de proceso

'************************************************************************

' Establecer la conexión con los SAP add-ins

Set R3 = CreateObject("SAP.Functions")

' Ejecutar la función RFC en modo visible (te saldrá el popup de SAP GUI para poner usuario y contraseña

If R3.Connection.logon(0, False) <> True Then

MsgBox ("Error conectando al sistema")

End

Else

' Indicar la función RFC

Set MyFunc = R3.Add("ZTESTKNA1")

' Cargar parametros a ser enviados a la RFC – EXPORTING

' Set PI_CODIGO = MyFunc.exports("PI_CODIGO")

' PI_CODIGO.Value = Range("A1").Value

' Cargar tablas a ser enviadas a la RFC – TABLES

' Set PT_TABLA = MyFunc.Tables("I_KNA1")

' PT_TABLA.Rows.Add

' PT_TABLA.Value(1, "NAME1") = Range("B1").Value

' PT_TABLA.Value(1, "CAMPO2") = Range("B2").Value

' PT_TABLA.Value(2, "CAMPO1") = Range("C1").Value

' PT_TABLA.Value(2, " CAMPO2") = Range("C2").Value

' Llamar a la función RFC y guardar el resultado

Result = MyFunc.CALL

If Result = False Then

MsgBox ("Error llamando a la función")

Else

' Recuperar las tablas de salida – TABLES

Set PT_OUTPUT = MyFunc.Tables("I_KNA1")

For iRow = 1 To PT_OUTPUT.RowCount

ActiveCell.Offset(iRow, 0) = PT_OUTPUT(iRow, "NAME1")


Next

' Salir del sistema SAP

R3.Connection.logoff

End If

End If

End Sub

miércoles, 5 de octubre de 2011

Macro de excel

Sub Macro3()
' Macro de excel que mueve datos de un sheet a otro
' Macro3 Macro
'
' Keyboard Shortcut: Ctrl+w
'
Dim codigo As String
Dim direc As String
Dim num1 As Integer
Dim num2 As Integer
Dim num3 As Integer
Dim num4 As Integer

Sheets("Input Data").Select
[A2].Select
dato1 = "activo"
Do While Not IsEmpty(dato1)
Sheets("Input Data").Select
codigo = ActiveCell
num2 = 0
'ActiveCell.Offset(num1, num2).Select
dato1 = ActiveCell.Offset(num1, num2)
If Not IsEmpty(dato1) Then
num2 = num2 + 1
dato2 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato3 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato4 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato5 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato6 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato7 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato8 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato9 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato10 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato11 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato12 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato13 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato14 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato15 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato16 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato17 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato18 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato19 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1
dato20 = ActiveCell.Offset(num1, num2)
num2 = num2 + 1


Sheets("Upload").Select
[A1].Select
num2 = 0
ActiveCell.Offset(num3, num2) = "H"
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato3
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato2
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato5
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato4
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato6
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato8
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato10

num3 = num3 + 1
num2 = 0
ActiveCell.Offset(num3, num2) = "R"
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato1
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato7 * -1
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato13
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato7 * -1
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato8
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato16
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato14
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato5


num3 = num3 + 1
num2 = 0
ActiveCell.Offset(num3, num2) = "G"
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato11
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato12
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato13
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato12
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato15
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato16
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato14
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato5
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = ""
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato17


num3 = num3 + 1
num2 = 0
ActiveCell.Offset(num3, num2) = "T"
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = 0
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = 0
num2 = num2 + 1
ActiveCell.Offset(num3, num2) = dato13
num3 = num3 + 1
num1 = num1 + 1
End If
Loop

End Sub