Access - Ejecución de código sólo funciona la primera vez

   
Vista:

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.

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder