Excel 2007 – 1004 en tiempo de Ejecución error de Actualización de la Tabla de la Consulta

Parece que este error es tan genérico que muchas de las soluciones existentes para abordar los distintos problemas.

En mi caso he creado una macro que funciona en Excel 2010 y no funciona en Excel 2007.

Aquí es un resumen de la código:

cn = "ODBC;Driver={SQL Server Native Client 10.0};Server=serverName;Database=dbName;Trusted_Connection=yes;"
sql = "select top 10 * from tableName"

Dim S As Worksheet
Set S = ActiveWorkbook.Sheets("Medical")

With S.QueryTables.Add(Connection:=cn, Destination:=S.Range("B1"))

        .CommandText = sql
        .Refresh BackgroundQuery:=False

     End With

Este código se ejecuta perfectamente en Excel 2010, pero los errores en Excel 2007.

¿Tengo que cambiar la cadena de conexión de la estructura para el 2007, o es que hay otro problema en el trabajo?

  • Error 1004 es error genérico, pero que tiene el actual texto de error? Debería decir algo como error 1004 en tiempo de ejecución: seguido por más de la descripción que le ayudará a reducir el problema.
  • Error en tiempo de ejecución ‘1004’: Error de ODBC en General
  • Hay una consulta en el rango B1 Médica de la hoja? Si hace clic derecho en la celda que debería ver la opción de actualización.
  • En 2010, pero no en 2007.
  • En lugar de .Commandtext puedes intentar cambiar de S. QueryTables.Agregar(Conexión:=cn, Destino:=S. Range(«B1»)) S. QueryTables.Agregar(Conexión:=cn, Destino:=S. Range(«B1»), Sql:=sql)?
InformationsquelleAutor lance | 2013-04-22

5 Kommentare

  1. 3

    Solución:

    Todas las máquinas que estaba usando con Excel 2010 «de SQL Server Native Client 10.0» como un posible controlador para Orígenes de Datos ODBC. Las máquinas con Excel 2007 sólo tienen «SQL Server».

    He cambiado mi cadena de conexión a ser:

    cn = "ODBC;Driver=SQL Server;Server=serverName;Database=dbName;Trusted_Connection=yes;"

    y trabajó como un encanto.

    Gracias a los que respondieron.

  2. 0

    Cambiar su propiedad .Refresh BackgroundQuery:=False a ser .Refresh. Nada ha cambiado desde el 2007 hasta el 2010 en lo que respecta a este modo si el cambio de la propiedad no se soluciona el problema que hay algo más en juego como parte del libro es corrupto.

    • Gracias por la sugerencia, pero no es el .BackgroundQuery propiedad causando el problema. Cambiar a su solución (o extracción de la BackgroundQuery en total), no tienen ningún efecto. Es la actualización que está causando el problema.
    • Lo siento, no significaba poco .Actualizar sin necesidad de utilizar el BackgroundQuery:=False.
  3. 0

    Tuve el mismo problema al llamar al procedimiento almacenado de la macro. Después de perder un día entero en la búsqueda de internet para la solución, finalmente encontré una solución.

    He utilizado SET NOCOUNT ON;

    Funcionó!

    • Podría usted por favor detalles sobre dónde debe ir y qué hace?
  4. 0

    No se puede agregar un comentario por lo que esta es la dirección de la pregunta planteada anteriormente.

    Esta respuesta me salvó un montón de tiempo.

    MSFT documentación sobre este:
    https://docs.microsoft.com/en-us/sql/t-sql/statements/set-nocount-transact-sql

    Siguiente es una implementación.

    create proc yourSproc
    
    as
    
    set nocount on;
    
    begin
    
        --Contents of sproc
    
    end
    • Esto no proporciona una respuesta a la pregunta. Una vez que usted tiene suficiente la reputación usted será capaz de comentario en cualquiera de los post. Compruebe también este ¿qué puedo hacer en lugar de.
    • Sí, yo sé que yo no la dirección de la OP, me indicaba que no podía publicar un comentario dirigido a la dirección en el comentario (que era una pregunta) por @SuperBiasedMan. Nuevo a la contribución de la pieza de el sitio, así que intenta explorar cómo interactuar sin la suficiente reputación. Gracias por los enlaces.
  5. 0

    He tenido este error exacto. El debug me llevaría al .la actualización de la línea así. He trabajado, de manera que cada que podía pensar para solucionar esa línea. Nada funcionó.

    El «Error de ODBC en General» verborrea me tuvo pensando…me fui a Ejecutar >> Administrador de ODBC de Microsoft >> Selecciona mi origen de datos >> Clic en el botón Configurar >> Clic en Probar Conexión

    Que devuelve un error de que mi contraseña ha expirado y la base de datos se establece en sólo lectura. Mi contraseña de Usuario de Windows no ha expirado, pero fue dentro de la ventana de cuando me «debe» cambiar mi contraseña…yo estaba usando una máquina de trabajo y obligatorias de la cuenta de usuario contraseña cambia cada 60 a 90 días o así, con un poco más de 30 días de período de gracia. Ni siquiera sabía que.

    No diciendo que esta es la solución para usted, pero yo estaba recibiendo exactamente el mismo error y había intentado cada pequeño truco y editar esta página web y la Internet, había que ofrecer, pero sin suerte. Me sali, restablecer mi Cuenta de Usuario de Windows contraseña de sesión de nuevo, abre el archivo de excel, presione el Botón Actualizar macro…y funcionó.

    De todos modos, tal vez esto ayude a alguien…

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea