Access - Crear una función con dos variables

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Crear una función con dos variables

Publicado por Toni (14 intervenciones) el 26/05/2019 09:21:47
Buenos días,

Estoy creando una función para poder llamarla desde diferentes partes de la aplicación, y que crea y abre una hoja excel con los datos de una consulta.

Para eso, he creado la función con el nombre de la consulta:

Function AbreExcel (NombreConsulta as String) as String
...
End Function

Y funciona cuando la llamo de la siguiente manera:

AbreExcel ("C02_PN01")

Ahora bien, cuando lo que quiero es diseñarla con dos variables, para que incluya el nombre del fichero, no funciona:

Function AbreExcel (NombreFichero, NombreConsulta as String) as String
...
End Function

Al llamarla, me da error ("error de compilación. se esperaba ="):

AbreExcel ("ListadoNiveles", "C02_PN01")


No se donde está el error. Si alguien puede ayudar, lo agradeceré.
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
sin imagen de perfil
Val: 30
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Crear una función con dos variables

Publicado por Ramon (13 intervenciones) el 26/05/2019 10:08:12
Muestra el código de la función y un ejemplo de como la llamas.
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
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Crear una función con dos variables

Publicado por Toni (14 intervenciones) el 26/05/2019 10:47:29
La función, con un sólo argumento, es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function AbreExcel (NomConsulta as String) as String
 
    Dim NomFitxer As String
 
    NomFitxer = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") & ". NombreFichero"
 
    DoCmd.TransferSpreadsheet acExport, 8, NomConsulta, "C:\Users\toni\Downloads\" & NomFitxer & ".xls", False, ""
 
    Dim Abrir_Excel As Object
    Set Abrir_Excel = CreateObject("Excel.Application")
 
    Abrir_Excel.Visible = True
    Abrir_Excel.Workbooks.Open ("C:\Users\toni\Downloads\" & NomFitxer & ".xls")
    Abrir_Excel.Windows(NomFitxer & ".xls").Activate
    Abrir_Excel.Sheets(NomConsulta).Select
 
 
End Function


Y funciona cuando la llamo de la siguiente manera:

AbreExcel ("C02_PN01")


Ahora bién, quisiera también poder meter como argumento el nombre de fichero, de la siguiente manera:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function AbreExcel(Fitxer, NomConsulta As String) As String
 
    Dim NomFitxer As String
 
    NomFitxer = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") & ". " & Fitxer
 
    DoCmd.TransferSpreadsheet acExport, 8, NomConsulta, "C:\Users\toni\Downloads\" & NomFitxer & ".xls", False, ""
 
    Dim Abrir_Excel As Object
    Set Abrir_Excel = CreateObject("Excel.Application")
 
    Abrir_Excel.Visible = True
    Abrir_Excel.Workbooks.Open ("C:\Users\toni\Downloads\" & NomFitxer & ".xls")
    Abrir_Excel.Windows(NomFitxer & ".xls").Activate
    Abrir_Excel.Sheets(NomConsulta).Select
 
End Function
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

Crear una función con dos variables

Publicado por Anonimo (3322 intervenciones) el 27/05/2019 00:36:32
En la declaración de la primera función (la que funciona) al parámetro se le define un tipo (String = cadena alfanumérica) cuando se le añade el segundo parámetro no se le indica nada (por defecto Variant).

Seria interesante definir el tipo (se asume que String) y por simple curiosidad verificar el valor real que actualmente se obtiene de esta asignación
1
NomFitxer = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") & ". " & Fitxer

Por ejemplo asi:
1
2
NomFitxer = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") & ". " & Fitxer
Msgbox NomFitxer

Esta alternativa también funcionaria:
1
NomFitxer = Format(Date, "yyyymmdd\.\ ") & Fitxer
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
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Crear una función con dos variables

Publicado por Toni (14 intervenciones) el 27/05/2019 09:43:20
Buenos días y gracias, Anónimo.

No parece que la variable sea el problema.
He realizado la corrección que propones, però el error continua siendo el mismo: cuando intento entrar el código para llamar la función AbreExcel2 (con dos parámetros), desde un formulario:

AbreExcel2 ("NombreFichero", "C_PN03")

En el momento de validar la linea de código, Accés me devuelve el mensaje:

Error de compilación:
Se esperaba: =

En cambio, esto no pasa cuando llamo la función AbreExcel (con un parámetro):

AbreExcel ("C_PN03")

Sin embargo, cuando ejecuto las mismas lineas des de la ventana inmediato de VBA, las dos funciones AbreExcel i AbreExcel2 funcionan correctamente, por lo que llego a la conclusión que el error esta en la llamada a la función AbreExcel2 desde los formularios.

Pero no consigo saber la razon, porqué a las dos funciones las llamo de la misma manera, però una funciona y la otra no.
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

Crear una función con dos variables

Publicado por Anonimo (3322 intervenciones) el 27/05/2019 23:12:14
Yo verificaría el comportamiento en otra maquina (una virtual también valdría) y de lo que resultase sacaría conclusiones.
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