VBA-Access: Trabajar con excel en segundo plano

Tengo el siguiente código:

  1. Private Sub B_Exporta_Click()
  2. DoCmd.SetWarnings False
  3. DoCmd.GoToRecord , , acFirst
  4. Dim rst As DAO.Recordset
  5. Dim appexcel As Object
  6. Dim plantilla As Object
  7. Set rst = Form.Recordset
  8. Set appexcel = CreateObject("Excel.Application")
  9. Do While Not rst.EOF
  10. With appexcel
  11. .Visible = False
  12. .DisplayAlerts = False
  13. Set plantilla = appexcel.Workbooks.Open(CurrentProject.Path & "\Plantilla_Reporte_OKs.xlsx")
    plantilla.SaveAs CurrentProject.Path & "\OKs\" & Me.Clasifica & ".xlsx"
  14. DoCmd.RunSQL "select Nombre_Fichero, Fecha_Carga, Unidad, Codigo_Error, Campo_Error, Descripción_Error, OKs_x_Reg_OK, KOs_x_Reg_OK, Id_Usuario, Clasifica into " & Me.Clasifica & " from Resumen_OKs_Clasifica where Clasifica='" & Me.Clasifica & "'"
  15. DoCmd.TransferSpreadsheet TransferType:=acExport, SpreadsheetType:=acSpreadsheetTypeExcel9, TableName:=Me.Clasifica, fileName:=CurrentProject.Path & "\OKs\" & Me.Clasifica & ".xlsx", Range:="Rango"
  16. DoCmd.DeleteObject acTable, Me.Clasifica
  17. plantilla.Sheets(2).Rows("6:6").Delete
  18. plantilla.Close (True)
  19. .Quit
  20. rst.MoveNext
  21. End With
  22. Loop
  23. End Sub

El código me funciona bien siempre y cuando no tenga ningún excel abierto. En cuanto tengo un excel abierto no me funciona.

El problema es que tengo fortalecer el código para que sí funcione con otras exceles abiertas aunque sean ajenas a lo que ejecuta el código.

Añade tu respuesta

Haz clic para o