Vota | Stampa | Notifica email    
Autore

[RISOLTO] Cercare file pdf in C:\ e inserirli in listbox su userfom

Ultimo Aggiornamento: 05/03/2024 09:47
27/02/2024 21:41

Questa non è una comunicazione personale.
CHIARO?
27/02/2024 21:54

Ciao Marius44,

in un post precedente ti avevo ringraziato per il tuo prezioso contributo a risolvere il mio problema.

Ho scoperto che i ringraziamenti non sono stati graditi al Moderatore visto che ha cancellato il mio post.

Te li rinnovo.

GRAZIE.

rex88
27/02/2024 22:38

Ciao Alfredo,

questo è il foglio completo.

Adesso faccio il codice per trasferire i dati dalla userform al foglio.

rex88
28/02/2024 09:06

Ciao Alfredo,

fatto il foglio adesso sto inserendo i dati dalla Userform.

Problemi non ne ho nell'inserimento dei dati nelle celle, ad esempio:

ws1.Range("E20").Value = Me.TB_Progressivo.Value 'progressivo

Invece ho trovato difficoltà ad inserire il segno "X" (segno di spunta che si trova sulla Userform) nella "Label1" che si trova all'inizio della riga 57 del foglio.

Capito come fare proseguirò.

Grazie

rex88

EDIT

in rete ho grovato questo:

https://www.forumexcel.it/forum/threads/attribuire-un-valore-ad-un-label-con-comparazione-variabile.26761/

con una tua sub.
[Modificato da rex88 28/02/2024 09:48]
Post: 3.755
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
28/02/2024 09:50

Per le label

esempio:

Private Sub Label1_Click()
If Label1.Caption = "X" Then
    Label1.Caption = ""
    Exit Sub
End If
With Label1
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
End Sub


Al click viene immessa o cancellata la "X"

QUALORA dovessi controllare da UserForm, il codice è un po' diverso, in quanto ci si deve riferire all'oggetto.
Per esempio, legare ad un pulsante su UserForm la valorizzazione della Label1 sul foglio attivo:
Private Sub CommandButton1_Click()
Set MyLbl = ActiveSheet.OLEObjects("Label1")
If MyLbl.Object.Caption = "X" Then
    MyLbl.Object.Caption = ""
    Exit Sub
End If
With MyLbl.Object
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
End Sub


saluti



[Modificato da dodo47 28/02/2024 10:07]
Domenico
Win 10 - Excel 2016
28/02/2024 10:24

Ciao Domenico,

intanto grazie per il consiglio.

La "X" la inserisco nella "TB_Utente10" che si trova sulla "FrmDiCo".

Una volta inserita la devo inviare nella "Label1" che si trova sul Foglio.

Questa è la sub sulla quale sto lavorando per trasfgerire i dati dalla "FrmDiCo" al foglio:

ws1.Range("E20").Value = Me.TB_Progressivo.Value 'progressivo
ws1.Range("P20").Value = Me.TB_Data 'data
ws1.Range("F25").Value = Me.TB_Committente1.Value 'committente
ws1.Range("E26").Value = Me.TB_Ubicazione_Impianto2.Value
ws1.Range("D27").Value = Me.TB_Ubicazione_Impianto1.Value
ws1.Range("M27").Value = Me.TB_Ubicazione_Impianto4.Value
ws1.Range("027").Value = Me.TB_Ubicazione_Impianto5.Value
ws1.Range("Q27").Value = Me.TB_Ubicazione_Impianto6.Value
ws1.Range("S27").Value = Me.TB_Ubicazione_Impianto7.Value
ws1.Range("E28").Value = Me.TB_Proprietario6.Value
ws1.Range("E29").Value = Me.TB_Proprietario6.Value
ws1.Range("E30").Value = Me.TB_Proprietario6.Value


A questo punto devo inserire l'istruzione che mi trasferisca la "X" nella "Label1".

Saluti.

rex88
Post: 3.756
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
28/02/2024 10:46

ciao
supponiamo che la tua "TB_Utente10" si riferisca alla Labe1 che sta sul foglio:

.....
Set MyLbl = ws1.OLEObjects("Label1")
If me.TB_Utente10 = "X" then
  With MyLbl.Object
    .Font.Name = "Arial"
    .Font.Size = 10
    .Caption = "X"
  End With
Else
   MyLbl.Object.Caption = ""
End If
.....


Lo stesso per le altre TB_Utente.....

Però dovresti provarci in autonomia.....la prossima volta farò come ha fatto Mario...🤣

saluti




Domenico
Win 10 - Excel 2016
28/02/2024 10:59

Ci provo.

Grazie
02/03/2024 09:21

Ciao,

prova e riprova, ma non ricavo il ragno dal buco.

Questa è la sub:

Private Sub COMPILA_MODELLO_Click()
Dim sDir1 As String, sDir2 As String, snomefile As String
Dim Objs As OLEObjects
Dim Obj As OLEObject
Dim MyLbl As Object
Dim sh5 As Worksheet
Dim rng As Range

Set sh5 = Worksheets("Conformità")


Dopo

sh5.Range("R56").Value = Me.TB_Utente9.Value

ho inserito questo ma non fa niente

Set MyLbl = sh5.OLEObjects("Label1")
sh5.OLEObjects("Label1").Object.Value = Me.TB_Utente10.Value
Post: 3.757
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
02/03/2024 10:47

non è quello che ti ho scritto....

saluti






[Modificato da dodo47 02/03/2024 11:21]
Domenico
Win 10 - Excel 2016
02/03/2024 11:09

Ciao Domenico,

OK il codice sul pulsante.

La tua istruzione la dovrei inserire nella sub come ho scritto nel precedente post perchè Il problema è che la “X” nella “TB_Utente10” e nelle altre TB viene inserita in automatico all’apertura della “FrmDiCo” una volta inseriti i dati del Cliente sulla “FrmClienti” cliccando sul pulsante “Inserisci”.

Post: 3.758
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
02/03/2024 11:23

Quelle istruzioni vanno inserite nella tua sub che alimenta il foglio....

se non ci riesci, manda il file....però......

saluti




[Modificato da dodo47 02/03/2024 11:24]
Domenico
Win 10 - Excel 2016
02/03/2024 13:45

Io te lo mando, mi preoccupa quel però........
02/03/2024 15:23

Questo è il file.

EDIT

Sul foglio Utente c'è il pulsante "APRI CLIENTE": inserire i dati di un Cliente (anche in minuscolo) e cliccare su "Inserisci".

Si aprirà la "FrmDiCo", con i dati dell'Azienda e del Committente inseriti in automatico.

Nelle "TB_Utente10" e "TB_Utente11" ci sono in automatico la "X" che devo riportare sul foglio.

Capito come funziona il codice poi provvedo io a inserile le istruzione nella sub anche per le altre TB che si trovano sulla "FrmDiCo"

Private Sub COMPILA_MODELLO_Click()
[Modificato da rex88 02/03/2024 15:34]
Post: 3.759
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
02/03/2024 16:31

è esattamente come ti ho detto di fare....chissà cosa combini!!

comunque, nella Private Sub COMPILA_MODELLO_Click(), DOPO:
Set sh5 = Worksheets("Conformità")

inserisci:
Set MyLbl = sh5.OLEObjects("Label1")
If Me.TB_Utente10 = "X" Then
  With MyLbl.Object
    .Font.Name = "Arial"
    .Font.Size = 10
    .Caption = "X"
  End With
Else
   MyLbl.Object.Caption = ""
End If


e cancella il tuo:
sh5.OLEObjects("Label1").Object.Value = Me.TB_Utente10.Value

saluti




Domenico
Win 10 - Excel 2016
02/03/2024 16:45

Su queste TB

TB_Impianto2 , TB_Impianto3 , TB_Impianto4 ,TB_Impianto5, TB_Impianto6,
TB_Edificio1, TB_Edificio2, TB_Edificio3, TB_Edificio4
TB_Dichiarazione_impianto1, TB_Dichiarazione_impianto3, TB_Dichiarazione_impianto5, TB_Dichiarazione_impianto6
TB_Allegati_obbligatori1, TB_Allegati_obbligatori2, TB_Allegati_obbligatori3, TB_Allegati_obbligatori4, TB_Allegati_obbligatori5, TB_Allegati_obbligatori6

la "X" la inserisco manualmente quando inserisco i dati sulla "FrmDico" quindi la tua istruzione la devo ripetere per ciasuna TB?

EDIT

Un chiarimento: non in tutte le TB che ho segnalato inserisco la "X".

Esempio "Dati impianto".

Ci sono queste TB:

TB_Impianto2 = Nuovo impianto
TB_Impianto3 = Trasforrmazione
TB_Impianto4 = Ampliamento
TB_Impianto5 = Muntenzione
TB_Impianto6 = Altro

Metto la "X" a seconda della tipologia dell'impianto.

Se l'impianto è Nuovo, metto la "X" nella TB_Impianto2 e salto le altre 4.


[Modificato da rex88 02/03/2024 17:08]
Post: 3.760
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
02/03/2024 17:08

Ciao
fai in questo modo:

1) vai nelle proprietà di tutte le Label del foglio Conformità e nel parametro "Font" scegli Arial (ora hai tutte Webdings) e riduci il carattere.

2) poi gestisci la cosa in questo modo per ciascuna TextBox::

if Me.TB_Utente???.Value= "X" then
sh5.OLEObjects("Label???").Object = "X"
else
sh5.OLEObjects("Label???").Object = ""
end if

e lo devi fare per tutte le textBox

saluti





Domenico
Win 10 - Excel 2016
02/03/2024 17:31

Ciao Domenico,

Funziona perfettamente.

Se in una delle TB non inserico la "X" perchè non ci vuole l'istruzione è sempre la stessa?

EDIT

Ho inserito l'istruzione per un'altra TB dove non ho inseri la "X" e il codice non mi dà errore e ciò significa che funziona per questa parte del tuo codice:

sh5.OLEObjects("Label???").Object = ""

E' corretta la mia deduzione?
[Modificato da rex88 02/03/2024 17:51]
Post: 3.761
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
02/03/2024 18:19

si, certo

saluti




Domenico
Win 10 - Excel 2016
02/03/2024 19:32

Posso dire che la discussione è risolta.

Ringrazio Alfredo per avermi dato l'imput e fornito il foglio di base e Domenico per il suo tutoraggio.

rex88

03/03/2024 10:42

Chiedo scusa se continuo.

Ho completato la sub

Private Sub COMPILA_MODELLO_Click

Inserisco il Cliente e clicco su "Inserisci" e si apre la "FrmDiCo".

Compilo tutte TB della "FrmDico" e clicco sul pulsante "Registra".

Il foglio "Conformità" viene popolato per intero.

Ho due problemi:

1) tutte le celle non sono unite comprese la M56 e la R56, ma in queste due i numeri non si vedono per intero e nelle celle c'è ####;

2) tutte le label vengono popolate con la "X" meno la Label19.

Allego il file.

rex88

EDIT

3) quando clicco sul pulsante "Pulisci" che sta sulla "FrmDiCo" mi dice "Impossibile modificare una parte di una cella unita".

Questa è la sub:

Private Sub CmdPulisci_Click()
Dim Objs As OLEObjects
Dim Obj As OLEObject
Dim MyLbl As Object
Dim sh5 As Worksheet
Dim rng As Range
Dim n As Integer

Set sh5 = Worksheets("Conformità")

'pulizia celle
sh5.Range("E20,P20,E25,E26,S26,D27,M27,O27,Q27,S27,E28,E29,D30," & _
"D53,K54,D55,L55,T55,C56,K56,M56,R56,O57,T57,O58,T58,I59,A60,D62,D65," & _
"A66,F66,H66,N66,P66,R66,T66,K67,K73,K74,A75,A87,B98").ClearContents

'pulizia label
For n = 1 To 21
sh5.OLEObjects("Label" & n).Object = vbNullString
Next n

MsgBox "TuttoPulito!!"
Set rng = Nothing
End Sub


Quando clicco sul pulsante esce il messaggio "Impossibile modificare una parte di una cella unita".

Saranno mica le celle M56 e R56?
[Modificato da rex88 03/03/2024 11:41]
Post: 7.555
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
03/03/2024 11:41

Ciao Devi usare un altro tipo di formato senza usare Unisci celle, guarda l'immagine selezioni prima le celle e poi metti il formato.
questo lo fa perche la cella è troppo piccola per contenere tutti i numeri, questo passaggio lo devi fare 1 sola volta, non ogni volta.



Ciao By Sal (8-D
[Modificato da by sal 03/03/2024 11:46]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
03/03/2024 13:30

Ciao by-sal,

grazie provvedo con calma.

Non sono riuscito a capire come fare per la "Label19" che si trova sul foglio.

Io sulla "TB_Allegati_obbligatori4" ho insewritoi la "X", ma sulla "Label19" c'è non so cosa.

Ti mando l'immagine
03/03/2024 14:08

La Label19 non funzionava perchè non avevo rettificato la Font.

Quindi il punto "2) tutte le label vengono popolate con la "X" meno la Label19" è stato risolto.

[Modificato da rex88 03/03/2024 14:12]
03/03/2024 15:45

Questo è l'ultimo file con le correzioni.

Sul Foglio "Conformità" ho rettificato il Formato celle come mi ha detto by-sal.

Permane l'errore su questa parte della sub:

Private Sub CmdPulisci_Click()

'pulizia celle
sh5.Range("E20,Q20,E25,E26,T26,E27,N27,P27,R27,T27,E28,E29,E30," & _
"D53,K54,D55,L55,U55,C56,K56,M56,S56,P57,U57,P58,U58,I59,A60,D62," & _
" D65,A66,F66,H66,N66,P66,S66,V66,K67,K73,K74,A75,A87,B98").ClearContents
Post: 7.556
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
03/03/2024 17:48

Ciao Rex, le celle "U57" - "U58" sono celle unite non vanno bene per cancellare i dati, oppure scrivi l'unione celle del tipo "U57:V57" e "U58:V58"

però se le dividi e fai "allinea al centro" elimini il problema, senza modificare il codice, ecco pure perche diciamo sempre che le celle unite sono un problema per Excel.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
03/03/2024 18:32

Se io unisco le celle posso allineare a sinistra, oppure devo sempre allineare al centro?
Post: 7.557
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
03/03/2024 18:37

Ciao Rex, fai una cosa senza perdere tempo dove trovi ",U57," sostituisci con ",U57:V57," e fai lo stesso dove trovi ",U58," con ",U58:V58,"

mi raccomando i 2 punti

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
03/03/2024 18:51

OK.

Prima di chiuderlo come risolto.

Faccio le prove e poi comunico.


03/03/2024 19:31

1) La compilazione del foglio "Conformità" mediante inserimento di dati sulla "FrmDiCo": funziona.

2) La pulizia delle celle e delle label sul foglio "Conformità": funziona.

3) Il salvataggio della dichiarazione in formato pdf funziona, solo che il file pdf viene salvato nella cartella "Documents" mentre dovrebbe essere salvata nella sottocartella "Dico" che si trova nella sottocartella "Anno" (nel nostro caso "2024") che si trova in C:\.

Il salvataggio dovrebbe essere fatto cliccando "Registra" nella sub

Private Sub COMPILA_MODELLO_Click()

Il file è stato costruito evitando la compilazione di un file pdf editabile soluzione che richiede Adobe Acrobat Pro.

Allego il file.

EDIT

nella stessa sub, prima di pulire il foglio "Conformità" si potrebbe salvarlo in una sottocartella "Excel" da creare nella sottocartella "Anno" (nel nostro caso "2024") che si trova in C:\.
[Modificato da rex88 03/03/2024 20:24]
Vota:
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
macro canc (3 messaggi, agg.: 02/12/2017 23:17)
Aperture file kml o kmz (7 messaggi, agg.: 14/06/2019 20:15)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:51. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com