Excel - Problema con una macro para importar datos

 
Vista:

Problema con una macro para importar datos

Publicado por Jorge (6 intervenciones) el 10/08/2007 19:40:31
Hola amigos

Tengo el siguiente problema para importar datos por medio de una macro.

resulta que pasa como parametro un numero , me funciona todo bien extrae los datos.
pero si paso un texto se me cae la macro.

Para que puedan entender la idea.

la macro se ejecuta con lo que yo ingreso en la celda d6 que es lo mismo que param1



Sub prueba()
'
Dim param1

Sheets("Procesos").Select
param1 = Range("D6").Cells.Text

Sheets("Hoja3").Select
ActiveSheet.Unprotect
Columns("A:IV").Select
Selection.ClearContents


With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=northwind;", _
Destination:=Sheets("Hoja3").Range("A2"))

.CommandText = "SELECT C.Customerid FROM Northwind..CUSTOMERS C WHERE C.Customerid = " & param1 & ""


.Name = "Consulta desde inti"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Problema con una macro para importar datos

Publicado por Abraham Valencia (2415 intervenciones) el 10/08/2007 23:54:17
Hummmm de donde "jalas" los datos??? probaste con:

... WHERE C.Customerid = '" & param1 & "'" -

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con una macro para importar datos

Publicado por jORGE (6 intervenciones) el 11/08/2007 03:17:27
La macro funciona sobre dato numerico pero no alfabetico.

el dato (parametro lo ingreso en la celda D6 de la planilla excel)



Mensaje de error : Se ha producido el error '1004' en tiempo de ejecución

Error general de ODBC


Sub impordatos()
'
' CONEXION Macro
' Macro grabada el 16/04/2007 por jv

'
Dim param1


Sheets("Procesos").Select
param1 = Range("D6").Cells.Text

Sheets("Hoja2").Select
ActiveSheet.Unprotect
Columns("A:IV").Select
Selection.ClearContents

With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=est;", _
Destination:=Sheets("Hoja2").Range("A2"))

.CommandText = "SELECT * FROM ESTUDIANTE WHERE ESTNOMBRE = "" & Param1 &"""

.Name = "Consulta desde inti"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con una macro para importar datos

Publicado por Jose (2 intervenciones) el 14/08/2007 09:33:11
Hola Jorge, Abraham y otros.

estoy con una situación parecida pero en un paso antes, es decir:
cuando ejecuto la macro que contiene la consulta web, siempre me pide que introduzca o seleccione las celdas de procedencia de los valores de los parametros variables.
Aunque yo configure la webquery para que me saque los valores de las celdas (si actualizo datos desde fuera de la macro me funciona perfectamente), siempre me abre la ventanas preguntandome dichos valores.

¿cómo puedo hacer para que se me ejecute automáticamente sin pedirme los valores? Los valores están en varias celdas.
No encuentro información completa sobre "commandtext" ¿es esta la única manera de resolverlo?

.CommandText = "SELECT * FROM ESTUDIANTE WHERE ESTNOMBRE = "" & Param1 &"""

SELECT *: (¿qué es * ?)
FROM: (si estoy en excel, ¿que elijo como FROM?)

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con una macro para importar datos

Publicado por jORGE (6 intervenciones) el 14/08/2007 19:02:21
MI QUERY FUNCIONA SOBRE UN DATO NUMERICO PERO SI INGRESO UN DATO ALFABETICO Y MODIFICO LA QUERY OSEA QUE ME PIDA EL NOMBRE EN VEZ DEL CODIGO NUMERICO ME ARROJA ERROR , NO SE COMO EVITAR ESTE PROBLEMA.

AQUI TE ENVIO MI RESPUESTA A TU PREGUNTA.


COMO FUNCIONA UN SELECT.

SELECT (CAMPOS)
FROM BASE DE DATOS.. TABLA
WHERE CONDICION.

SELECT USER FROM DATOS..TABLA1.

ES LO MISMO QUE

USE DATOS
SELECT USER FROM TABLA1.

AHORA , TE ACONSEJO QUE DECLARES LAS VARIABLES IGUAL QUE PARAM1 Y PARAM2 REFERENCIANDO Y LUEGO COLOCALA EN LA QUERY QUE DESEAS , MIRA COMO ESTA HECHA ESTA QUERY , ASI LO PODRAS HACER.

Sub IdentCobeQueNoExistenEnTabla14()
'
' CONEXION Macro
' Macro grabada el 16/04/2007 por JValdenegro
'

'
Dim param1
Dim param2

Dim mes, a As Integer
Dim año
Dim fecha
Dim mesaño

Sheets("Procesos").Select
param1 = Range("D6").Cells.Text -- corresponde a la celda d6
param2 = Range("D7").Cells.Text -- corresponde a la celda d7

Sheets("IdentCobeQueNoExistenEnTabla").Select
ActiveSheet.Unprotect
Columns("A:IV").Select
Selection.ClearContents

fecha = Str(param1) 'fecha que corresponde al año en forma de cadena
año = Left(fecha, 5) 'valor que corresponde al año
mes = Mid(fecha, 6, 2) 'valor que corresponde al mes
dia = Right(fecha, 2) 'Valor que corresponde al dia
mesaño = Val(Left(fecha, 7)) 'Valor que Corresponde año y mes ejemplo 200704

--- conexion ODBC
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=prueba;", _
Destination:=Sheets("IdentCobeQueNoExistenEnTabla").Range("A2"))
-- base de datos..tabla
.CommandText = "SELECT C.COMPANYNAME FROM Northwind..CUSTOMERS C WHERE C.COUNTRY = " & param1 & ""

.Name = "Consulta desde prueba"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
Call Volver
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar