Ejecución de código sólo funciona la primera vez
Publicado por José A. Sales (1 intervención) el 10/04/2015 10:31:23
Hola, buenas a todos, he desarrollado un código que está incluido en un evento on click de un botón que está en un formulario. Las acciones de este código es la exportación de unos determinados campos a una hoja excel. Todo lo que tiene que hacer el código lo hace bien, pero, solo funciona la primera vez que se ejecuta, y es ahí donde radica el problema. Es decir, que si cambio de cliente, y quiero exportar estos datos, la primera vez lo hace bien, pero las sucesivas deja el libro excel en blanco. He revisado la carga en memoria de las variables y esto lo hace bien. Con lo cual, no sé si el problema estará en el bucle for que exporta los datos a la hoja excel. Espero que me podáis ayudar. Muchas gracias de antemano.
PD: Dejo el código para que le echéis un vistazo.
PD: Dejo el código para que le echéis un vistazo.
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
Private Sub Comando278_Click()
On Error Resume Next
Dim export_data(0 To 12) As String
Dim txt_data(0 To 12) As String
Dim cp_cliente As String
Dim cp_obra As String
Dim cp_numobra As String
'MsgBox "Longitud total: " & Len(Nz(Me.FORMProyectosAuxCliente.Form.CP.Value, ""))
'MsgBox "Primer caracter: " & Left(Me.FORMProyectosAuxCliente.Form.CP.Value, 1)
'MsgBox "Dos primeros caracteres: " & Left(Me.FORMProyectosAuxCliente.Form.CP.Value, 2)
If Len(Nz(Me.FORMProyectosAuxCliente.Form.CP.Value, "")) = 4 Then
cp_cliente = cons_prov(Left(Me.FORMProyectosAuxCliente.Form.CP.Value, 1))
'MsgBox cp_cliente
Else
cp_cliente = cons_prov(Left(Me.FORMProyectosAuxCliente.Form.CP.Value, 2))
'MsgBox cp_cliente
End If
'MsgBox Len(Me.CP.Value)
If Len(Me.CP.Value) = 0 Then
cp_numobra = Me.FORMProyectosAuxCliente.Form.CP.Value
Else
cp_numobra = Me.CP.Value
End If
If Len(cp_numobra) = 4 Then
cp_obra = cons_prov(Left(cp_numobra, 1))
Else
cp_obra = cons_prov(Left(cp_numobra, 2))
End If
txt_data(0) = "Referencia"
export_data(0) = Nz(Me.Referencia.Value, "")
txt_data(1) = "Nom_client"
export_data(1) = Nz(Me.FORMProyectosAuxCliente.Form.Nombre.Value, "")
txt_data(2) = "CIF_client"
export_data(2) = Nz(Me.FORMProyectosAuxCliente.Form.CIF.Value, "")
txt_data(3) = "Adreça_client"
export_data(3) = Nz(Me.FORMProyectosAuxCliente.Form.Direccion.Value, "")
txt_data(4) = "Poble_client"
export_data(4) = Nz(Me.FORMProyectosAuxCliente.Form.Poblacion.Value, "")
txt_data(5) = "CP_Client"
export_data(5) = Nz(Me.FORMProyectosAuxCliente.Form.CP.Value, "")
txt_data(6) = "Provincia_Client"
export_data(6) = Nz(cp_cliente, "")
txt_data(7) = "Telf_Client"
export_data(7) = Nz(Me.FORMProyectosAuxCliente.Form.Teléfono.Value, "")
txt_data(8) = "Fax_Client"
export_data(8) = Nz(Me.FORMProyectosAuxCliente.Form.Fax.Value, "")
txt_data(9) = "Adreça_Obra"
export_data(9) = Nz(Me.DireccionObra.Value, "")
txt_data(10) = "CP_Obra"
export_data(10) = Nz(cp_numobra, "")
txt_data(11) = "Poble_Obra"
export_data(11) = Nz(Me.Población.Value, "")
txt_data(12) = "Provincia_Obra"
export_data(12) = Nz(cp_obra, "")
Dim appExcel As Object 'Excel.Application
Dim newbook As Workbook 'LIBRO
Dim newsheet As Worksheet 'HOJA
Dim ruta_export As String 'RUTA DE EXPORTACION
ruta_export = carpetaProyectos & export_data(0) & " " & Nz(export_data(1), "") & "\" & "export_data"
'MsgBox ruta_export
' abrimos excel, lo hacemos visible y abrimos el libro
' que nos interesa
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.DisplayAlerts = True
Set newbook = appExcel.Workbooks.Add
Set newsheet = newbook.Sheets(1)
newbook.Sheets(1).Select
newbook.Sheets(1).Name = "export_data"
Dim i As Integer
With newsheet
For i = 0 To 12
'MsgBox export_data(i)
'Range("A" & i + 1).Value = txt_data(i)
Range("B" & i + 1).Value = export_data(i)
Next i
End With
i = 0
' activa estas dos lineas si quieres cerrar
' y guardar los cambios automáticamente
With newbook
.SaveAs ruta_export, xlNormal, "", "", False, False, xlNoChange
End With
appExcel.newbook.Close True
appExcel.Quit
Set appExcel = Nothing
Set newbook = Nothing
Set newsheet = Nothing
ruta_export = ""
End Sub
Valora esta pregunta
0