Error en QueryGetData grabada funciona con ODBC 2.0 controladores

Seleccione idioma Seleccione idioma
Id. de artículo: 131383 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

En Microsoft Excel, al grabar una macro de Visual Basic que utiliza el comando obtener datos externos (menú datos) y utilizar el controlador de Microsoft Excel o el controlador de Microsoft Access desde Microsoft ODBC Driver Pack 2.0 para devolver datos a la hoja de cálculo cuando se ejecuta la macro grabada, puede aparecer alguno de los mensajes de error siguiente:
Error de sintaxis
-o bien -
Variable no definida

Causa

Este comportamiento se produce porque el argumento ConnectionStr para estos controladores ODBC Driver Pack 2.0 contiene más información que los controladores de versión 1.0, provocando la grabadora de macros grabar una cadena de texto más de 255 caracteres. Cuando se supera el límite de 255 caracteres, la información restante no se registra en la macro. La cantidad de datos que se registran depende de la ubicación del archivo de base de datos (ruta de acceso) y la ubicación del directorio predeterminado para el origen de datos.

El siguiente es un ejemplo de una instrucción de función QueryGetData incompleto que se puede registrar cuando se utiliza el controlador de Microsoft Excel (versión 2.0) para conectarse a la base de datos DATA.XLS:
    Application.Run "QueryGetData", _
     ' Note that the following four lines appear as one recorded line
     "DSN=Microsoft Excel 5.0 Worksheet;DBQ=C:\EXCEL5C\DATA.XLS;
      DefaultDir=C:\EXCEL5C;Deleted=1;DriverId=22;
      FIL=excel 5.0;JetIniPath=odbcddp.ini;MaxScanRows=16;
      ReadOnly=1;Statistics=0;", _
      "",True,True,False, Range("S
				
siguiente es un ejemplo de una instrucción de función QueryGetData completa que se registra cuando se utiliza el controlador de Microsoft Excel (versión 1.0):
   Application.Run "QueryGetData", _
         "DSN=Excel files;DBQ=c:\excel5c;FIL=Excel;", _
         "", True, True, False, Range("Sheet1!$A$1"), True
				
nota que este problema no ocurre con el controlador de texto de Microsoft incluido en el paquete de controladores ODBC 2.0.

Solución

Para evitar este problema, puede modificar la macro grabada para que la sintaxis es correcta y toda la información aparezca como debería. Los siguientes son ejemplos de funciones de QueryGetData correctas y completas con los controladores de ODBC Driver Pack 2.0 de Microsoft Excel y Microsoft Access:

Microsoft proporciona ejemplos de los procedimientos de Visual Basic con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita, incluyendo pero sin limitarse a las garantías implícitas de comerciabilidad e idoneidad para un propósito determinado. Este procedimiento de Visual Basic se proporciona "tal cual" y Microsoft no garantiza que puede utilizarse en todas las situaciones. Microsoft no admite modificaciones de este procedimiento para satisfacer los requisitos del cliente para un propósito determinado. Tenga en cuenta que una línea que está precedida por un apóstrofo presenta un comentario en el código; se proporcionan comentarios para explicar lo que hace el código en un punto determinado en el procedimiento. Tenga en cuenta también que un carácter de subrayado (_) indica que el código continúa de una línea a la siguiente. Puede escribir líneas que contienen este carácter como una línea lógica o puede dividir las líneas de código para incluir el carácter de continuación de línea. Para obtener más información acerca de Visual Basic para aplicaciones de estilo de programación, consulte la sección de "Programación estilo en este manual" en la sección "Convenciones de documentos" de la "Guía del usuario de Visual Basic".

Observe que los ejemplos siguientes están diseñados para mostrar los argumentos necesarios para la función QueryGetData y tendrá que modificarse para funcionar correctamente para devolver datos de la base de datos.

Controlador Microsoft Excel

  Application.Run "QueryGetData", _
     ' Note that the following four lines appear as one recorded line
     "DSN=Microsoft Excel 5.0 Worksheet;DBQ=C:\EXCEL5C\DATA.XLS;
     DefaultDir=C:\EXCEL5C;Deleted=1;DriverId=22;
     FIL=excel 5.0;JetIniPath=odbcddp.ini;MaxScanRows=16;
     ReadOnly=1;Statistics=0;", _
     "",True,True,False, Range("Sheet1!$A$1"), True, False
				

Controlador Microsoft Access

   Application.Run "QueryGetData", _
     ' Note that the following four lines appear as one recorded line
     "DSN=Access 2.0 - ODBC 2.0;DBQ=D:\ACCESS\DB1.MDB;
     DefaultDir=D:\ACCESS;Deleted=1;DriverId=25;
     FIL=MS Access;JetIniPath=odbcddp.ini;MaxBufferSize=512;
     PageTimeout=600;Statistics=0;UID=admin;", _
     "", True, True, False, Range("Sheet1!$A$1"), True, False
				

Referencias

Para obtener más información acerca de la función QueryGetData, elija el botón Buscar en la referencia de Visual Basic y escriba:
Función QueryGetData

Propiedades

Id. de artículo: 131383 - Última revisión: miércoles, 12 de febrero de 2014 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 5.0c
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 95 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbcode kbprb kbprogramming KB131383 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 131383

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com