Access - Objetos Excel

 
Vista:

Objetos Excel

Publicado por lolo (1 intervención) el 19/02/2002 18:23:02
Tengo un formulario muy sencillo con un boton de Excel. Al apretar este boton, se deberia abrir excel y una Plantilla predeterminada.

Una vez en la plantilla una casilla se deberia rellenar con "sin uso"

Esto funciona correctamente la primera vez, despues de la cual como mucho me se abre el template pero no escribe nada.

Os adjunto el codigo para ver si alguien puede darme alguna sugerencia.

Este es el codigo

Dim oApp As Excel.Application
Dim wksb As Excel.Workbook
Dim WKSS As Excel.Worksheet
Set oApp = CreateObject("Excel.Application")
Set wksb = oApp.Workbooks.Add("D:\TSM\Templates\x.xlt")
Set WKSS = wksb.ActiveSheet

oApp.Visible = True
ActiveWindow.WindowState = xlMaximized
oApp.UserControl = False
With WKSS
Cells(6, 5) = "Sin uso"
End With
oApp.UserControl = True
wksb.Close
oApp.Quit
Set oApp = Nothing
Set wksb = Nothing
Set WKSS = Nothing


Un saludo
Gracias
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 Alejandro

Objetos Excel

Publicado por Alejandro (4142 intervenciones) el 20/04/2023 01:18:31
Hola Lolo.

Parece que el problema podría estar en la línea donde intentas escribir "Sin uso" en la celda, ya que estás usando la notación de Excel para hacer referencia a la celda (por ejemplo, "Cells(6, 5)"). Sin embargo, dado que no estás haciendo referencia a un objeto específico (como una hoja de cálculo o un rango), puede que la referencia no sea válida la segunda vez que ejecutas el código.

Una posible solución sería asignar el rango de la celda a una variable en lugar de usar la notación abreviada de Excel. Puedes hacerlo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim oApp As Excel.Application
Dim wksb As Excel.Workbook
Dim WKSS As Excel.Worksheet
Set oApp = CreateObject("Excel.Application")
Set wksb = oApp.Workbooks.Add("D:\TSM\Templates\x.xlt")
Set WKSS = wksb.ActiveSheet
 
oApp.Visible = True
ActiveWindow.WindowState = xlMaximized
oApp.UserControl = False
Dim celda As Excel.Range
Set celda = WKSS.Cells(6, 5)
celda.Value = "Sin uso"
oApp.UserControl = True
wksb.Close
oApp.Quit
Set oApp = Nothing
Set wksb = Nothing
Set WKSS = Nothing

Espero que esto te ayude a resolver el problema.
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