
Abrir y cerrar Excel desde visual basic
Publicado por Daniel (18 intervenciones) el 11/02/2017 21:39:48
Buenas noches,
Estoy utilizando un libro de excel en un programa de visual basic.
Puedo abrirlo y trabajar con el sin problemas, el problema aparece cuando lo intento cerrar, ya que no me cierra el libro.
Muestro el código que utilizo.
Muchas gracias de antemano.
Un saludo
Daniel.
Estoy utilizando un libro de excel en un programa de visual basic.
Puedo abrirlo y trabajar con el sin problemas, el problema aparece cuando lo intento cerrar, ya que no me cierra el libro.
Muestro el código que utilizo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'Modulo para cerrar el excel.
Module ModuleCerrarExcel
Public Sub CerrarExcel()
oExcel.DisplayAlerts = False
oBook.Save()
'oBook.SaveAs(filetest, 51) '51 es xlsx / 1 es xls
oBook = Nothing
oSheet = Nothing
' oBook.Close()
oExcel.Quit()
releaseObject(oSheet)
releaseObject(oExcel)
End Sub
Private Sub releaseObject(ByVal obj As Object)
' Necesario para que el Excel se cierre, ya que con oExcel.Quit() puede no cerrarse.
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
End Module
'Cierro el excel desde el boton X del propio form.
Imports System.Data
Imports System.IO
Imports Excel = Microsoft.Office.Interop.Excel
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Me.Hide()
ModuleCerrarExcel.CerrarExcel()
End Sub
Cuando cierro me sale:
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
Excepción producida: 'System.NullReferenceException' en mscorlib.dll
Información adicional: Referencia a objeto no establecida como instancia de un objeto.
Y si quito de comentario "oBook.Close()"
me sale Excepción producida: 'System.NullReferenceException' en Programa Prog.exe
Información adicional: Referencia a objeto no establecida como instancia de un objeto.
El modulo que utilizo para abrir es este:
Imports System.Data
Imports System.IO
Imports Excel = Microsoft.Office.Interop.Excel
Module ModuleAbrirExcel
Public filetest As String = "C:\Desktop\\Excel.xlsx"
' Public oExcel As Object
'Hoja Entradas y salidas
Public oExcel As New Excel.Application
Public oBook As Microsoft.Office.Interop.Excel.Workbook
Public oSheet As Microsoft.Office.Interop.Excel.Worksheet
Public Sub AbrirExcel()
oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Open(filetest)
oBook = oExcel.ActiveWorkbook
oSheet = oExcel.Worksheets(1)
End Sub
End Module
Muchas gracias de antemano.
Un saludo
Daniel.
Valora esta pregunta


0