Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

chiamare una funzione da macro

2,044 views
Skip to first unread message

anna

unread,
Jun 18, 2012, 6:03:43 AM6/18/12
to
Ho una funzione (o "sub" non sò quale sia il termine corretto) che se
chiamata da codice funzione perfettamente:
Call PrintReport("RPT_ETICHETTE")
vorrei "chiamare" la stessa funzione da una macro ma non capisco come.
nelle macro esiste l'azione "esegui codice" ma poi cosa scrivo? ho provato
tutto ma non riesco.
mi aiutate?


Karl Donaubauer

unread,
Jun 18, 2012, 6:35:40 AM6/18/12
to
anna wrote:
> Ho una funzione (o "sub" non sò quale sia il termine corretto) che
> se chiamata da codice funzione perfettamente:
> Call PrintReport("RPT_ETICHETTE")
> vorrei "chiamare" la stessa funzione da una macro ma non capisco
> come. nelle macro esiste l'azione "esegui codice" ma poi cosa
> scrivo?

Per poter chiamarla da un macro la procedura "PrintReport"
dev'essere una funzione (non una sub) e dev'essere
dicchiarata Public, cioè raggiungibile dappertutto.

Se non riesci, incolla la prima riga della procedura "PrintReport"
nel prossimo messaggio, scrivi dove si trova questa procedura
(nel modulo di una maschera o in un modulo che vedi nella
finestra database o ...) e quale versione di Access usi.

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it

anna

unread,
Jun 18, 2012, 6:47:38 AM6/18/12
to

Per poter chiamarla da un macro la procedura "PrintReport"
dev'essere una funzione (non una sub) e dev'essere
dicchiarata Public, cioè raggiungibile dappertutto.

Se non riesci, incolla la prima riga della procedura "PrintReport"
nel prossimo messaggio, scrivi dove si trova questa procedura
(nel modulo di una maschera o in un modulo che vedi nella
finestra database o ...) e quale versione di Access usi.

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it

ho un "Modulo1" (sta nel riquadro di spostamento)
che contiene:
Sub PrintReport(ByVal rpt_etichetta As String)
On Error GoTo PrintReportErrore

Dim StringaTitolo As String
StringaTitolo = "Stampa Report: " & "rpt_etichetta"

Dim Copie As Integer
Copie = InputBox("Inserire il numero di copie da stampare", StringaTitolo,
1)

If Copie <> 0 Then
Call DoCmd.OpenReport("rpt_etichetta", acViewPreview, , , acIcon)
DoCmd.PrintOut , , , , Copie
DoCmd.Close
Else
Exit Sub
End If

PrintReportExit:
Exit Sub
PrintReportErrore:
MsgBox Err.DESCRIPTION
Resume PrintReportExit
End Sub

se chiamo questa funzione (serve a stampare n copie di un report) da codice
con:
Call PrintReport("RPT_ETICHETTA")
funziona, ma io vorrei eseguirlo da macro perchè voglio impostare una
condizione.



Karl Donaubauer

unread,
Jun 18, 2012, 7:02:04 AM6/18/12
to
anna ha scritto:
>
> Per poter chiamarla da un macro la procedura "PrintReport"
> dev'essere una funzione (non una sub) e dev'essere
> dicchiarata Public, cioč raggiungibile dappertutto.
> ...
> funziona, ma io vorrei eseguirlo da macro perchč voglio impostare una
> condizione.

Devi cambiare tutte le presenze della parola "Sub" nella
procedura a "Function", cioč:

Function PrintReport(ByVal rpt_etichetta As String)
...
Exit Function
...
Exit Function
...
End Function

anna

unread,
Jun 18, 2012, 7:35:26 AM6/18/12
to
"Karl Donaubauer" ha scritto nel messaggio
news:a48g5g...@mid.individual.net...

anna ha scritto:
>
> Per poter chiamarla da un macro la procedura "PrintReport"
> dev'essere una funzione (non una sub) e dev'essere
> dicchiarata Public, cioè raggiungibile dappertutto.
> funziona, ma io vorrei eseguirlo da macro perchè voglio impostare una
> condizione.

Devi cambiare tutte le presenze della parola "Sub" nella
procedura a "Function", cioè:

Function PrintReport(ByVal rpt_etichetta As String)
...
Exit Function
...
Exit Function
...
End Function

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it

Grazie, funziona benissimo!!!

Bruno Campanini

unread,
Jun 18, 2012, 9:13:42 AM6/18/12
to
on 18-06-12, anna supposed :

> Per poter chiamarla da un macro la procedura "PrintReport"
> dev'essere una funzione (non una sub) e dev'essere
> dicchiarata Public, cioè raggiungibile dappertutto.

Che sia dichiarata Public d'accordo, ma che non si possa chiamare se
non è function proprio no.

> ho un "Modulo1" (sta nel riquadro di spostamento)
> che contiene:
> Sub PrintReport(ByVal rpt_etichetta As String)
> On Error GoTo PrintReportErrore
>
> Dim StringaTitolo As String
> StringaTitolo = "Stampa Report: " & "rpt_etichetta"
>
> Dim Copie As Integer
> Copie = InputBox("Inserire il numero di copie da stampare", StringaTitolo, 1)
>
> If Copie <> 0 Then
> Call DoCmd.OpenReport("rpt_etichetta", acViewPreview, , , acIcon)

Semplicemente:
DoCmd.OpenReport "rpt_etichetta", acViewPreview, , , acIcon

Bruno


Karl Donaubauer

unread,
Jun 18, 2012, 11:08:57 AM6/18/12
to
Bruno Campanini wrote:
> ...
>> Per poter chiamarla da un macro la procedura "PrintReport"
>> dev'essere una funzione (non una sub) e dev'essere
>> dicchiarata Public, cioè raggiungibile dappertutto.
>
> Che sia dichiarata Public d'accordo, ma che non si possa
> chiamare se non è function proprio no.
> ...

Davvero?
Qual'è il tuo trucco per chiamare una Sub con "EseguiCodice"?

Bruno Campanini

unread,
Jun 18, 2012, 11:26:24 AM6/18/12
to
Karl Donaubauer formulated on Monday :
> Bruno Campanini wrote:
>> ...
>>> Per poter chiamarla da un macro la procedura "PrintReport"
>>> dev'essere una funzione (non una sub) e dev'essere
>>> dicchiarata Public, cioè raggiungibile dappertutto.
>>
>> Che sia dichiarata Public d'accordo, ma che non si possa
>> chiamare se non è function proprio no.
>> ...
>
> Davvero?
> Qual'è il tuo trucco per chiamare una Sub con "EseguiCodice"?

Che cos'è "EseguiCodice"?
Mi pare si stia parlando di eseguire una sub da un'altra sub.
Io intendo ciò e tu forse intendi altro.
Sicuramente intendiamo cose diverse, non v'è alcun dubbio.

Bruno

PS
Lascia che corregga il tuo pur ottimo italiano:
" qual è " e non " qual'è ".
Si tratta di troncamento e non di elisione (cose strane della nostra
grammatica).


Karl Donaubauer

unread,
Jun 18, 2012, 11:43:14 AM6/18/12
to
Bruno Campanini wrote:
> Karl Donaubauer formulated:
>>> ...
>> Qual'č il tuo trucco per chiamare una Sub con "EseguiCodice"?
>
> Che cos'č "EseguiCodice"?

L'azione macro di Access per eseguire codice.

> Mi pare si stia parlando di eseguire una sub da un'altra sub.
> Io intendo ciň e tu forse intendi altro.
> Sicuramente intendiamo cose diverse, non v'č alcun dubbio.

Dal suo primo post:
> vorrei "chiamare" la stessa funzione da una macro....
> nelle macro esiste l'azione "esegui codice" ma poi cosa scrivo?

> PS
> Lascia che corregga il tuo pur ottimo italiano:
> " qual č " e non " qual'č ".
> Si tratta di troncamento e non di elisione (cose strane della
> nostra grammatica).

Grazie molto per l'indicazione!
0 new messages