none
Error al guardar excel si esta abierto RRS feed

  • Pregunta

  • Hola a todos,

    Tengo un problema con los excels. Estoy trabajando con el visual studio 6. Genero un excel al que le inserto un grafico como imagen. Hasta ahí todo bien, el problema viene cuando tengo el excel abierto, y le doy a exportar el mismo excel y me da el siguiente error: "Se ha producido el error '1004' en tiempo de ejecucion. No se puede obtener acceso a grafico1.xlsx." El error me da cuando va a guardar el objeto excel, en el ApExcel.Sheets(1).SaveAs. El excel lo creo a traves del CreateObject("Excel.application").

    Muchas gracias a todos, 

    Un saludo,

    Andrea


    arbnoa

    miércoles, 3 de abril de 2013 6:20

Respuestas

  • Puedes bacerlo haciendo

    'Comprueba si Excel ya estaba activo.
    On Error Resume Next
    
    Set oDoc = GetObject(, "Excel.Application")
    If err.Number <> 0 Then
       ExcelYaActivo = False
       err.Clear
    Else
       ExcelYaActivo = True
    End If
    
    On Error GoTo err

    Luego harías lo siguiente

    If ExcelYaActivo Then
       oDoc.Application.Workbooks.Open Fichero
    Else
       Set oDoc = CreateObject("Excel.Application")
       oDoc.Application.Workbooks.Open Fichero
    End If


    Saludos, Javier J

    jueves, 4 de abril de 2013 11:29

Todas las respuestas

  • Yo para generar ficheros Excel uso algo como esto:

    Dim oDoc       As Object
    
    On Error Resume Next
    Set oDoc = CreateObject("Excel.Application")
    If oDoc Is Nothing Then
       Set oDoc = GetObject(, "Excel.Application")
    End If
    On Error GoTo err
    
    oDoc.DisplayAlerts = False
    
    ...
    
    oDoc.ActiveWorkbook.Save
    oDoc.ActiveWorkbook.Close
    oDoc.Quit
    Set oDoc = Nothing


    Saludos, Javier J

    miércoles, 3 de abril de 2013 11:48
  • Gracias por contestar, si me lo creo q de esa manera, pero lo que quiero es saber si el excel lo tengo abierto en el momento que le doy al boton exportar, porque si es asi, el visual da un error y casca la aplicacion. Alguna idea?? 

    arbnoa

    jueves, 4 de abril de 2013 9:47
  • Puedes bacerlo haciendo

    'Comprueba si Excel ya estaba activo.
    On Error Resume Next
    
    Set oDoc = GetObject(, "Excel.Application")
    If err.Number <> 0 Then
       ExcelYaActivo = False
       err.Clear
    Else
       ExcelYaActivo = True
    End If
    
    On Error GoTo err

    Luego harías lo siguiente

    If ExcelYaActivo Then
       oDoc.Application.Workbooks.Open Fichero
    Else
       Set oDoc = CreateObject("Excel.Application")
       oDoc.Application.Workbooks.Open Fichero
    End If


    Saludos, Javier J

    jueves, 4 de abril de 2013 11:29