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

Aprire con commandButton una userform creata in un'altro file

1,246 views
Skip to first unread message

giovanni mastellone

unread,
Oct 6, 2009, 12:26:48 PM10/6/09
to
Salve
Volevo sapere se è possibile aprire una userform Creata in un'altro
file cioè:
nel File1.xls creo una userform1 con un commandbutton1, cliccando
dovrei aprire la userform1 del file2.xls, e se alla userform1 del
file2.xls si possa nascondere la barra del titolo.

Vi ringrazio anticipatamente
Giovanni Mastellone

Mauro Gamberini

unread,
Oct 7, 2009, 9:25:41 AM10/7/09
to
Volevo sapere se � possibile aprire una userform Creata in un'altro
file cio�:

nel File1.xls creo una userform1 con un commandbutton1, cliccando
dovrei aprire la userform1 del file2.xls, e se alla userform1 del
file2.xls si possa nascondere la barra del titolo.
***********************************************

La tua UserForm sul file b.xls.
In un modulo standard dello stesso file,
il codice che apre la UserForm:

Public Sub mApriForm()
UserForm1.Show vbModeless
End Sub

(vedi tu se lasciare o meno vbModeless
capendo cosa fa sulla guida)

Questo il codice in un modulo del file
a.xls che lancia la macro contenuta nel
file b.xls:

Public Sub m()
Application.Run ("b.xls!mApriForm")
End Sub

Per nascondere la barra del titolo della UserForm.
Crea un modulo di classe nel progetto dove
hai la UserForm(Inserisci-->Modulo di classe)
e chiamalo, ad esempio,
clsForm.

Metti al suo interno questo codice:

Private Declare Function FindWindow Lib "USER32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetWindowLong Lib "USER32" _
Alias "GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "USER32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) _
As Long

Private Declare Function DrawMenuBar Lib "USER32" _
(ByVal hWnd As Long) As Long


Private Const GWL_STYLE As Long = (-16)
Private Const WS_CAPTION As Long = &HC00000


Public Property Set Form(oForm As Object)

Dim lStyle As Long
Dim hWndForm As Long

If Val(Application.Version) < 9 Then
hWndForm = FindWindow( _
"ThunderXFrame", oForm.Caption)
Else
hWndForm = FindWindow( _
"ThunderDFrame", oForm.Caption)
End If

lStyle = GetWindowLong(hWndForm, GWL_STYLE)

lStyle = lStyle And Not WS_CAPTION
SetWindowLong hWndForm, GWL_STYLE, lStyle
DrawMenuBar hWndForm

End Property


E metti questo codice nel modulo di codice
della UserForm alla quale vuoi nascondere
la barra del titolo:

Dim objForm As New clsForm

Private Sub UserForm_Initialize()

Set objForm.Form = UserForm1

With Me
.BorderStyle = fmBorderStyleSingle
End With

End Sub

Private Sub UserForm_Terminate()
Set objForm = Nothing
End Sub

Prevedi qualche modo per chiudere la UserForm.

Fai gentilmente sapere se hai risolto e se hai problemi
posta sempre in questo thread. Grazie.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


Mauro Gamberini

unread,
Oct 7, 2009, 9:28:35 AM10/7/09
to
<cut>

Aggiungo: entrambi i files dell'esempio devono
essere aperti.

giovanni mastellone

unread,
Oct 7, 2009, 1:51:50 PM10/7/09
to
On 7 Ott, 15:28, "Mauro Gamberini"

Carissimo Mauro
Ti ringrazio per aver risolto il mio problema , sei un grande

saluti
G.Mastellone

Mauro Gamberini

unread,
Oct 8, 2009, 1:56:21 AM10/8/09
to
> Carissimo Mauro
> Ti ringrazio per aver risolto il mio problema
>

Bene.
Grazie a te per il riscontro.

giovanni mastellone

unread,
Oct 8, 2009, 6:55:23 AM10/8/09
to
On 8 Ott, 07:56, "Mauro Gamberini"

Ciao caro Mauro
Spero di non chiederti troppo.
Riguarda sempre il quesito che tu gentilmente mi hai risolto
La mia domanda è , visto che ho un file principale a.xls e più di un
file secondari b.xls, c.xls ecc., dove ognuno è composto da una
userform, mi chiedo è possibile da commandbutton apro il file b.xls
più la userform, ed un commandbutton nella userform del file b che
chiude sia la stessa userform che il file b.xls. Ovviamente questo
vale anche per i file c.xls d.xls ecc…
Questo per gestire meglio l’applicazione che devo realizzare e per non
tenere tutti i file aperti in memoria.
Scusa per la mia poca conoscenza della materia, mi sto avvicinando
alla programmazione del Vba da poco tempo.
Certo di un tuo interessamento cordiali saluti
G.Mastellone

giovanni mastellone

unread,
Oct 8, 2009, 1:01:07 PM10/8/09
to
On 8 Ott, 12:55, giovanni mastellone <giovanni.mastell...@gmail.com>
wrote:

> On 8 Ott, 07:56, "Mauro Gamberini"
>
> <maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> > > Carissimo Mauro
> > > Ti ringrazio per aver risolto il mio problema
>
> > Bene.
> > Grazie a te per il riscontro.
>
> > --
> > ---------------------------
> > Mauro Gamberinihttp://www.riolab.org/http://blog.maurogsc.eu/http://social.microsoft...

Mauro Gamberini

unread,
Oct 9, 2009, 4:45:45 AM10/9/09
to
La mia domanda � , visto che ho un file principale a.xls e pi� di un
file secondari b.xls, c.xls ecc., dove ognuno � composto da una
userform, mi chiedo � possibile da commandbutton apro il file b.xls
pi� la userform, ed un commandbutton nella userform del file b che

chiude sia la stessa userform che il file b.xls. Ovviamente questo
vale anche per i file c.xls d.xls ecc�
**********************************************

Capito poco(ma � normale...).
Questa macro nel file a.xls
apre il file b.xls e lancia la macro
sul file b.xls che apre la
UserForm1:

Public Sub m()
Workbooks.Open ("C:\b.xls")


Application.Run ("b.xls!mApriForm")
End Sub

Questo pulsante sulla UserForm1 del file
b.xls chiude la UserForm e il file b.xls:

Private Sub CommandButton1_Click()
Unload Me
ThisWorkbook.Close
End Sub

Pu� andare cos�?

giovanni mastellone

unread,
Oct 12, 2009, 12:54:38 PM10/12/09
to
On 9 Ott, 10:45, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> La mia domanda è , visto che ho un file principale a.xls e più di un
> file secondari b.xls, c.xls ecc., dove ognuno è composto da una
> userform, mi chiedo  è possibile da commandbutton apro il file b.xls
> più la userform, ed un commandbutton  nella userform del file b che

> chiude sia la stessa userform che il file b.xls. Ovviamente questo
> vale anche per i file c.xls d.xls ecc…
> **********************************************
>
> Capito poco(ma è normale...).

> Questa macro nel file a.xls
> apre il file b.xls e lancia la macro
> sul file b.xls che apre la
> UserForm1:
>
> Public Sub m()
>     Workbooks.Open ("C:\b.xls")
>     Application.Run ("b.xls!mApriForm")
> End Sub
>
> Questo pulsante sulla UserForm1 del file
> b.xls chiude la UserForm e il file b.xls:
>
> Private Sub CommandButton1_Click()
>     Unload Me
>     ThisWorkbook.Close
> End Sub
>
> Può andare così?

Ciao carissimo, ti chiedo scusa se non mi sono fatto capire
sull’ultima richiesta che tu gentilmente però sei riuscito a
risolvermi lo stesso,
solo una cosa ti chiedo, per eliminare la barra del titolo dell'
userform ,ho eseguito le tue istruzioni, ma non succede niente, ti
chiedo se potresti ricontrollare il codice inviato , oppure sarò io
che non sono all'altezza (come sarà di sicuro)
codice:


lStyle = GetWindowLong(hWndForm, GWL_STYLE)


End Property


Private Sub UserForm_Initialize()


Set objForm.Form = UserForm1


End Sub


cordiali saluti
G. Mastellone

Mauro Gamberini

unread,
Oct 13, 2009, 4:39:14 AM10/13/09
to
solo una cosa ti chiedo, per eliminare la barra del titolo dell'
userform ,ho eseguito le tue istruzioni, ma non succede niente, ti
chiedo se potresti ricontrollare il codice inviato , oppure sar� io
che non sono all'altezza (come sar� di sicuro)
**********************************************

Forse non metti il codice al posto giusto.

<vecchio post>

lStyle = GetWindowLong(hWndForm, GWL_STYLE)

End Property

Private Sub UserForm_Initialize()

Set objForm.Form = UserForm1

End Sub

</vecchio post>

Leggi bene la prima parte e seguila passo passo.
Se hai pi� file in cui richiamare le UserForm,
devi fare quanto sopra in ogni file per
ogni UserForm.

giovanni mastellone

unread,
Oct 15, 2009, 7:39:49 AM10/15/09
to
On 13 Ott, 10:39, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> solo una cosa ti chiedo, per   eliminare la barra del titolo dell'
> userform ,ho eseguito le tue istruzioni, ma non succede niente, ti
> chiedo se potresti ricontrollare il codice inviato , oppure sarò io
> che non sono all'altezza (come sarà di sicuro)
> Se hai più file in cui richiamare le UserForm,

> devi fare quanto sopra in ogni file per
> ogni UserForm.
>
> --
> ---------------------------

Ciao carissimo mauro
Avevi ragione tù, per nascondere la barra del titolo dell’userform,
sbagliavo a incollare il codice .
Solo adesso mi trovo che il codice per chiudere il file e userform
del file B1 , funziona ma mi chiude anche la userform del file a


Questo pulsante sulla UserForm1 del file
b.xls chiude la UserForm e il file b.xls:

</vecchio post>

Private Sub CommandButton1_Click()
Unload Me
ThisWorkbook.Close
End Sub

Cosa devo fare?
Scusa ancora e grazie
G.Mastellone

0 new messages