Complementos en Excel 2007

06/04/2009 - 15:41 por Gustavo Echenique | Informe spam
Hola Foro!

Necesito utilizar el complemento xlodbc.xla en Excel 2007, pero no lo
encuentro en ninguna parte.
¿Alguno de ustedes conoce la manera de activarlo?

Desde ya, agradezco mucho su atención.

Preguntas similare

Leer las respuestas

#11 Gustavo Echenique
17/04/2009 - 14:11 | Informe spam
Hola Héctor!

Realmente estoy sorprendido por tu apoyo, y sinceramente te lo agradezco.

Tienes razón, en Febrero de 2007 comenté que había resuelto la conectividad
entre Excel e Informix, y lo hago a través de QueryTables, de la siguiente
manera:

Sub EjecutarConsultaDeuda()

'Borramos la hoja de datos para no perder tiempo con rutinas de borrado
'de datos, de botones, etc.
Application.DisplayAlerts = False
ActiveWorkbook.Sheets("Datos").Delete
Application.DisplayAlerts = False
'Ahora agregamos una nueva hoja de Datos
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveWorkbook.Sheets(2).Name = "Datos"

ActiveWorkbook.Sheets("Principal").Select

'Buscamos la Fecha de Inicio para la Stored. Esta fecha de inicio
'se obtiene de partir la fecha que ingresa el operador en la celda
'D3, con las funciones DAY, MONTH y YEAR, para poder invertirlas
'para que las tome el motor Informix con el Formato EEUU

'En la celda B10 empezaremos a guardar los datos de la fecha
'de Inicio y en la celda D10 los de la fecha de finalización

ActiveSheet.Range("B9").Select
'Ahora damos vuelta los valores obtenidos para armar la fecha
Fecha_Inicio = ActiveCell.Offset(1, 0).Value & ActiveCell.Offset(2,
0).Value & ActiveCell.Offset(3, 0).Value

ActiveSheet.Range("E9").Select
nIdRuta = ActiveCell.Value

If ActiveSheet.Range("E7").Value = Null Or ActiveSheet.Range("E9").Value
= Null Then
ActiveSheet.Range("E7").Select
VolverAtras
End If

'ahora buscamos el origen de datos (ODBC) que vamos a utilizar para la
consulta (podemos usar varios)
IndiceODBC = "Cemdo"
'IndiceODBC = "gustavo"
'IndiceODBC = "gechenique"

'ahora aprovechamos el mismo valor para buscar la clave
cPassword = "QWERASDF"
'cPassword = "informix"
'cPassword = "informix"

'Creamos la tabla auxiliar para las rutas e insertamos las rutas
seleccionadas en la caja de lista en la tabla xxRutas
CrearTablaRutas

'Armamos el string que contiene la sentencia ejecutable
'que le vamos a pasar al motor
sqlstring = "Execute Procedure xxFacturasDeleg(" & "'" & Fecha_Inicio &
"'" & "," & nIdRuta & ")"

sqlfinal = sqlstring

'Debug.Print sqlfinal

connstring = "ODBC;DSN=" & IndiceODBC & ";UID=informix;PWD=" & cPassword
& ""

ActiveWorkbook.Sheets(2).Cells.ClearFormats

ActiveWorkbook.Sheets(2).Select

LimpiarDatosHoja

With ActiveSheet.QueryTables.Add(Connection:=connstring,
Destination:=Range("A1"), Sql:=sqlfinal)
'.AdjustColumnWidth = False
'.PreserveFormatting = False
'.FieldNames = False
'.BackgroundQuery = True
'.Refresh
.Refresh BackgroundQuery:=False
End With

PonerTitulosHoja


'ActiveSheet.Range("A1:R1").Columns.AutoFit
'ActiveSheet.Columns("A:R").AutoFit

' ActiveSheet.QueryTables(1).Refresh BackgroundQuery = False
' ActiveSheet.QueryTables(1).Refresh = True

With ActiveSheet.QueryTables(1)
If .Refreshing Then .CancelRefresh
End With

'ActiveSheet.QueryTables(1).EndConnect


'Range("A2").QueryTable.Refresh
'ActiveSheet.QueryTables(1).AdjustColumnWidth = True
ActiveSheet.Columns("B:I").ColumnWidth = 12

End Sub

Lo que ahora necesito es "disparar" un Procedimiento almacenado que crea una
tabla auxiliar en el motor para almacenar las rutas seleccionadas por el
usuario ya que a Informix no puedo pasarle parámetros variables (por lo
menos en la versión que tengo instalada).

Espero te sirva para guiarte

Un abrazo.

Gustavo


"Héctor Miguel" escribió en el mensaje
news:
hola, Gustavo !

... tengo un motor de base de datos Informix, y necesito conectarme desde
Excel para lo siguiente:
... sacar un reporte de deuda que el sistema del que disponemos no
provee, y no creo que lo haga.
... mediante una celda en la que el operador ingrese una fecha tope para
la deuda
y un listbox en donde figuran las rutas de facturacion (es un criterio
para agrupar los clientes)
... seleccionar una o mas rutas y ejecutar un procedimiento almacenado
del motor Informix con estos parametros.
... ayudarme con ADO, como por ejemplo, para conectarme con el motor,
ejecutar una consulta, etc...
La ayuda de VBA me resulta criptica, y muy poco clara al momento de
emplear los metodos de ADO...



si recuerdo bien, +/- alla por febrero 2007 comentaste que ya tenias
resuelta la conexion entre excel e informix
vendria bien si comentas las cadenas (strings) que utilizas actualmente
para la conexion y la consulta (en vba)
ya sea que utilices solo macros personalizadas y/o hagas pasos mediante el
complemento xlodbc.xla o ms-query

la intencion de pedir que expongas esos "strings" es poder "ver" lo que
pudiera resultar dificil de explicar (p.e.)
ubicacion de la base de datos, campos y criterios de la consulta, las
celdas donde tomar "parametros", etc.
(el etc. incluye cualquier requerimiento "especial" al consultar bases de
informix, como orden de fechas o ???)

saludos,
hector.

Respuesta Responder a este mensaje
#12 Héctor Miguel
17/04/2009 - 23:02 | Informe spam
hola, Gustavo !

... la conectividad entre Excel e Informix, lo hago a traves de QueryTables, de la siguiente manera (...)
Lo que ahora necesito es "disparar" un Procedimiento almacenado que crea una tabla auxiliar en el motor
para almacenar las rutas seleccionadas por el usuario ya que a Informix no puedo pasarle parametros variables
(por lo menos en la versión que tengo instalada).



(segun parece) lo que necesitas es ejecutar consultas almacenadas (stored procedures) en informix
y lo que expones es la "creacion" de una tabla de consulta (.QueryTables.Add) -???-

-> no estoy seguro si la estructura de procedimientos almacenados se parece a la de sql-server
pero ve si te sirve algo de lo comentado en los siguientes enlaces...
Ed Ferrero: Run SQL Server stored procedure in Excel macro -> http://tinyurl.com/pdmg2
Robin Hammond: Stored procedures -> http://tinyurl.com/lpak2
{+} Getting stored procedure result to excel -> http://tinyurl.com/epors
Sean Connolly: pass paramter to SQL server stored procedure -> http://tinyurl.com/rdavt
conversaciones varias -> http://tinyurl.com/op4k5
otra conversacion mas > http://tinyurl.com/3yyjtr

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Sub EjecutarConsultaDeuda()
'Borramos la hoja de datos para no perder tiempo con rutinas de borrado
'de datos, de botones, etc.
Application.DisplayAlerts = False
ActiveWorkbook.Sheets("Datos").Delete
Application.DisplayAlerts = False
'Ahora agregamos una nueva hoja de Datos
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveWorkbook.Sheets(2).Name = "Datos"
ActiveWorkbook.Sheets("Principal").Select
'Buscamos la Fecha de Inicio para la Stored. Esta fecha de inicio
'se obtiene de partir la fecha que ingresa el operador en la celda
'D3, con las funciones DAY, MONTH y YEAR, para poder invertirlas
'para que las tome el motor Informix con el Formato EEUU
'En la celda B10 empezaremos a guardar los datos de la fecha
'de Inicio y en la celda D10 los de la fecha de finalización
ActiveSheet.Range("B9").Select
'Ahora damos vuelta los valores obtenidos para armar la fecha
Fecha_Inicio = ActiveCell.Offset(1, 0).Value & ActiveCell.Offset(2, 0).Value & ActiveCell.Offset(3, 0).Value
ActiveSheet.Range("E9").Select
nIdRuta = ActiveCell.Value
If ActiveSheet.Range("E7").Value = Null Or ActiveSheet.Range("E9").Value = Null Then
ActiveSheet.Range("E7").Select
VolverAtras
End If
'ahora buscamos el origen de datos (ODBC) que vamos a utilizar para la consulta (podemos usar varios)
IndiceODBC = "Cemdo"
'IndiceODBC = "gustavo"
'IndiceODBC = "gechenique"
'ahora aprovechamos el mismo valor para buscar la clave
cPassword = "QWERASDF"
'cPassword = "informix"
'cPassword = "informix"
'Creamos la tabla auxiliar para las rutas e insertamos las rutas seleccionadas en la caja de lista en la tabla xxRutas
CrearTablaRutas
'Armamos el string que contiene la sentencia ejecutable
'que le vamos a pasar al motor
sqlstring = "Execute Procedure xxFacturasDeleg(" & "'" & Fecha_Inicio & "'" & "," & nIdRuta & ")"
sqlfinal = sqlstring
'Debug.Print sqlfinal
connstring = "ODBC;DSN=" & IndiceODBC & ";UID=informix;PWD=" & cPassword & ""
ActiveWorkbook.Sheets(2).Cells.ClearFormats
ActiveWorkbook.Sheets(2).Select
LimpiarDatosHoja
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlfinal)
'.AdjustColumnWidth = False
'.PreserveFormatting = False
'.FieldNames = False
'.BackgroundQuery = True
'.Refresh
.Refresh BackgroundQuery:=False
End With
PonerTitulosHoja
'ActiveSheet.Range("A1:R1").Columns.AutoFit
'ActiveSheet.Columns("A:R").AutoFit
' ActiveSheet.QueryTables(1).Refresh BackgroundQuery = False
' ActiveSheet.QueryTables(1).Refresh = True
With ActiveSheet.QueryTables(1)
If .Refreshing Then .CancelRefresh
End With
'ActiveSheet.QueryTables(1).EndConnect
'Range("A2").QueryTable.Refresh
'ActiveSheet.QueryTables(1).AdjustColumnWidth = True
ActiveSheet.Columns("B:I").ColumnWidth = 12
End Sub
Respuesta Responder a este mensaje
#13 Gustavo Echenique
24/04/2009 - 22:48 | Informe spam
Hola Héctor, te pido disculpas por no haberme comunicado antes.

Al final lo resolví mediante la conexión por ADO como me habías sugerido.

Te agradezco muchísimo la ayuda brindada.

Un abrazo.

Gustavo Echenique

"Héctor Miguel" escribió en el mensaje
news:Ow65N$
hola, Gustavo !

... la conectividad entre Excel e Informix, lo hago a traves de
QueryTables, de la siguiente manera (...)
Lo que ahora necesito es "disparar" un Procedimiento almacenado que crea
una tabla auxiliar en el motor
para almacenar las rutas seleccionadas por el usuario ya que a Informix
no puedo pasarle parametros variables
(por lo menos en la versión que tengo instalada).



(segun parece) lo que necesitas es ejecutar consultas almacenadas (stored
procedures) en informix
y lo que expones es la "creacion" de una tabla de consulta
(.QueryTables.Add) -???-

-> no estoy seguro si la estructura de procedimientos almacenados se
parece a la de sql-server
pero ve si te sirve algo de lo comentado en los siguientes enlaces...
Ed Ferrero: Run SQL Server stored procedure in Excel macro ->
http://tinyurl.com/pdmg2
Robin Hammond: Stored procedures -> http://tinyurl.com/lpak2
{+} Getting stored procedure result to excel ->
http://tinyurl.com/epors
Sean Connolly: pass paramter to SQL server stored procedure ->
http://tinyurl.com/rdavt
conversaciones varias -> http://tinyurl.com/op4k5
otra conversacion mas > http://tinyurl.com/3yyjtr

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Sub EjecutarConsultaDeuda()
'Borramos la hoja de datos para no perder tiempo con rutinas de
borrado
'de datos, de botones, etc.
Application.DisplayAlerts = False
ActiveWorkbook.Sheets("Datos").Delete
Application.DisplayAlerts = False
'Ahora agregamos una nueva hoja de Datos
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveWorkbook.Sheets(2).Name = "Datos"
ActiveWorkbook.Sheets("Principal").Select
'Buscamos la Fecha de Inicio para la Stored. Esta fecha de inicio
'se obtiene de partir la fecha que ingresa el operador en la celda
'D3, con las funciones DAY, MONTH y YEAR, para poder invertirlas
'para que las tome el motor Informix con el Formato EEUU
'En la celda B10 empezaremos a guardar los datos de la fecha
'de Inicio y en la celda D10 los de la fecha de finalización
ActiveSheet.Range("B9").Select
'Ahora damos vuelta los valores obtenidos para armar la fecha
Fecha_Inicio = ActiveCell.Offset(1, 0).Value & ActiveCell.Offset(2,
0).Value & ActiveCell.Offset(3, 0).Value
ActiveSheet.Range("E9").Select
nIdRuta = ActiveCell.Value
If ActiveSheet.Range("E7").Value = Null Or
ActiveSheet.Range("E9").Value = Null Then
ActiveSheet.Range("E7").Select
VolverAtras
End If
'ahora buscamos el origen de datos (ODBC) que vamos a utilizar para la
consulta (podemos usar varios)
IndiceODBC = "Cemdo"
'IndiceODBC = "gustavo"
'IndiceODBC = "gechenique"
'ahora aprovechamos el mismo valor para buscar la clave
cPassword = "QWERASDF"
'cPassword = "informix"
'cPassword = "informix"
'Creamos la tabla auxiliar para las rutas e insertamos las rutas
seleccionadas en la caja de lista en la tabla xxRutas
CrearTablaRutas
'Armamos el string que contiene la sentencia ejecutable
'que le vamos a pasar al motor
sqlstring = "Execute Procedure xxFacturasDeleg(" & "'" & Fecha_Inicio
& "'" & "," & nIdRuta & ")"
sqlfinal = sqlstring
'Debug.Print sqlfinal
connstring = "ODBC;DSN=" & IndiceODBC & ";UID=informix;PWD=" &
cPassword & ""
ActiveWorkbook.Sheets(2).Cells.ClearFormats
ActiveWorkbook.Sheets(2).Select
LimpiarDatosHoja
With ActiveSheet.QueryTables.Add(Connection:=connstring,
Destination:=Range("A1"), Sql:=sqlfinal)
'.AdjustColumnWidth = False
'.PreserveFormatting = False
'.FieldNames = False
'.BackgroundQuery = True
'.Refresh
.Refresh BackgroundQuery:=False
End With
PonerTitulosHoja
'ActiveSheet.Range("A1:R1").Columns.AutoFit
'ActiveSheet.Columns("A:R").AutoFit
' ActiveSheet.QueryTables(1).Refresh BackgroundQuery = False
' ActiveSheet.QueryTables(1).Refresh = True
With ActiveSheet.QueryTables(1)
If .Refreshing Then .CancelRefresh
End With
'ActiveSheet.QueryTables(1).EndConnect
'Range("A2").QueryTable.Refresh
'ActiveSheet.QueryTables(1).AdjustColumnWidth = True
ActiveSheet.Columns("B:I").ColumnWidth = 12
End Sub




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida