¿Como puedo generar nuevas hojas a libro Excel con VB.net?
Publicado por José Vicente (113 intervenciones) el 19/10/2020 09:26:54
Hola, buenos días, tengo un aplicacion que genera un libro Excel y dentro de él llego a generar una hoja aparte de la primera, pero a partir de ahí ya nada, al intentar generar otra me borra la anterior, la deja en blanco y crea una tercera mezcla de la que ha borrado y la nueva.
¿Cómo lo puedo solucionar?. Gracias.
Mi código es:
¿Cómo lo puedo solucionar?. Gracias.
Mi código es:
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
Private Sub Guarda_btn_Click(sender As Object, e As EventArgs) Handles Guarda_btn.Click
valor = CStr(fechaIni_tb.Text) 'GUARDAMOS LA PRIMERA FECHA COMO STRING
fin = CStr(fechaFin_tb.Text) 'GUARDAMOS LA ÚLTIMA FECHA COMO STRING
Dim fecha1, fecha2 As Date
fecha1 = Date.Parse(valor)
fecha2 = Date.Parse(fin)
Dim numHojas As Int16
dias = DateDiff(DateInterval.Day, fecha1, fecha2)
numero = valor.Substring(valor.IndexOf("/") + 1, valor.LastIndexOf("/") - 3) 'EXTRAEMOS EL NÚMERO DE MES
mes = MonthName(numero, True) 'LE PONEMOS NOMBRE AL MES
exApp = New Application
exApp.Workbooks.Open(archivo) 'ABRIMOS EL LIBRO
exApp.Visible = True
numHojas = exApp.Sheets.Count 'CONTAMOS LAS HOJAS DEL LIBRO
exApp.Range("A1").Select()
exApp.ActiveSheet.Select
Dim PrimeraCell As String = ""
Dim RangoSeleccionado As String = ""
Dim NumCol As Integer = 0
Dim NumRow As Integer = 0
Dim TotalNumCol As Integer = 0
Dim TotalNumRow As Integer = 0
If exApp.Selection.Find(valor) Is Nothing Then
MessageBox.Show("ERROR. NO HAY SELECCIONADO NADA.", "ERROR.", MessageBoxButtons.OK, MessageBoxIcon.Error)
exApp.Workbooks.Close()
exApp.Quit()
exHoja = Nothing
exLibro = Nothing
exApp = Nothing
Exit Sub
Else
exApp.Selection.Find(valor).Select()
PrimeraCell = exApp.ActiveCell.Address
NumCol = exApp.ActiveCell.Column
NumRow = exApp.ActiveCell.Row
TotalNumRow = exApp.ActiveSheet.UsedRange.Rows.Count
TotalNumCol = exApp.ActiveSheet.UsedRange.Columns.Count
End If
With exApp
exApp.Worksheets.Add(After:=exApp.Worksheets(1)) ' EL AFTER ES PARA EVITAR CONFUNDIR LAS HOJAS
exApp.Worksheets(1).Select()
If fechaFin_tb.Text = fechaIni_tb.Text Then
' SELECCIONAMOS DESDE LA FECHA DESEADA HASTA EL FINAL
RangoSeleccionado = PrimeraCell & ":" & Chr(64 + TotalNumCol - NumCol + 1) & TotalNumRow
Else
' SELECCIONAMOS EL RANGO DESDE LA FECHA DESEADA
RangoSeleccionado = PrimeraCell & ":" & Chr(64 + TotalNumCol - NumCol + 1) & (NumRow + dias)
End If
.ActiveSheet.Range(RangoSeleccionado).Select()
.Selection.Copy ' COPIAMOS EL CONTENIDO
.ActiveWorkbook.Sheets(numHojas + 1).Select()
.ActiveSheet.Name = mes ' LE CAMBIAMOS EL NOMBRE
.ActiveSheet.Range("A2").Insert()
.ActiveSheet.Rows.Item(1).Font.Bold = 1 'NEGRITA
.ActiveSheet.Rows.Item(1).Font.ColorIndex = 49 'COLOR DEL ENCABEZADO
.ActiveSheet.Rows.Item(1).HorizontalAlignment = 3 'ALINEADO DEL ENCABEZADO
.ActiveSheet.Range("A1").Value = " FECHA "
.ActiveSheet.Range("B1").Value = " SISTÓLICA "
.ActiveSheet.Range("C1").Value = " DIASTÓLICA "
.ActiveSheet.Range("D1").Value = " PULSACIONES "
.ActiveSheet.Range("E1").Value = " SATURACIÓN "
.ActiveSheet.Range("A1:E1").Borders.LineStyle = 1
.ActiveSheet.Rows.Item(1).AutoFit()
.ActiveSheet.Range("A1:E1").Cells.Interior.Color = Color.Cyan
.ActiveSheet.Range("A2:E70").HorizontalAlignment = 3
.ActiveSheet.Rows.Font.Size = 12 ' TAMAÑO DE LA FUENTE
.ActiveSheet.Rows.Font.Name = "Adobe Garamond Pro Bold" 'TIPO DE FUENTE
.ActiveSheet.Columns.AutoFit() 'AJUSTE DE LAS COLUMNAS
.ActiveSheet.Range("A2:A367").Font.ColorIndex = 5 'COLOR DE LA FUENTE DE LA COLUMNA DE FECHAS
.ActiveSheet.Range("E1").End(Excel.XlDirection.xlDown).Select() 'SELECCIONAMOS LA ÚLTIMA CELDA CON DATOS HOJA2
.ActiveWorkbook.Sheets(1).Select() 'SELECCIONAMOS LA HOJA 1 DEL LIBRO MODIFICADO
.ActiveSheet.Range("E1").End(Excel.XlDirection.xlDown).Select() 'SELECCIONAMOS LA ÚLTIMA CELDA CON DATOS HOJA1
If System.IO.File.Exists(archivo) = True Then
'SI EL ARCHIVO EXISTE LO BORRAMOS Y GUARDAMOS EL NUEVO
File.Copy(archivo, archivo_ltl, True)
System.IO.File.Delete(archivo_ltl)
Else
'SI NO EXISTE LO GUARDAMOS
exLibro.SaveAs(archivo)
End If
.ActiveWorkbook.Save() ' GRABAMOS LOS CAMBIOS EN EL LIBRO
exApp.Workbooks.Close()
exApp.Quit()
End With
exHoja = Nothing
exLibro = Nothing
exApp = Nothing
Dim P As System.Diagnostics.Process ' CERRAMOS TODOS LOS PROCESOS DE EXCEL ABIERTOS
Try
For Each P In System.Diagnostics.Process.GetProcesses
If P.ProcessName.ToUpper Like "*EXCEL*" Then
P.Kill()
End If
Next
Catch
End Try
GC.WaitForPendingFinalizers()
GC.Collect()
MessageBox.Show("FICHERO MODIFICADO Y GUARDADO", "PERFECTO.", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Valora esta pregunta


0