Condividi:        

Ricavare Dati Separati scritti in un File Txt

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Ricavare Dati Separati scritti in un File Txt

Postdi A.Maurizio » 05/12/16 12:53

Ciao a Tutti il mio problema e questo :
Usando sempre Excel con office 2007 , ho inserito in un userform "11 Textbox" ora non ricordo ben chi fosse in quanto non voglio prendermi il merito che non mi appartiene .
Su internet ho trovato questo codice :

Codice: Seleziona tutto
 Private Sub Cmd_Trova_Cliente_Click()
ChDir ThisWorkbook.Path
    myFile = ThisWorkbook.Path & "\Database.txt"
    'myFile = Application.GetOpenFilename("File di testo,*.txt")
    If myFile = "Falso" Then
        MsgBox "Nessun file selezionato.", vbCritical + vbOKOnly, "Attenzione"
        Exit Sub
    End If

Open myFile For Input As #1
Do Until (EOF(1))
    Line Input #1, Stringa
    If InStr(Stringa, UserForm1.TextBox1) > 0 Then
        'Stop
        A = InStr(Stringa, ",")
        B = InStr(A + 1, Stringa, ",")
        C = B - A
       
        TextBox2 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox3 = Replace(Mid(Stringa, B + 1), Chr(34), "")
        GoTo Esci
    End If
Loop
Esci:
Close #1

End Sub 


Ahora devo dire che come codice funziona Benissimo ; c'è solo un problema che non riesco a risolvere ed e questo :
Come potete vedere il codice in questione e stato scritto per recuperare i dati separatamente per record usando solo tre (Textbox)
e fin qui nulla ripeto da eccepire.
Ma ora io vorrei poter inserire altri report per ogni cliente memorizzato nel File Txt , come ad esempio : Non Solo (Id) ; (Cognome) ; (Nome) ; ecc...!
Ma anche (Num tel Cell) ; (Indirizzo Email) ; (Note Personali) ecc...!
Che tra le altre cose sono già state memorizzate nel file Txt.
Però quando immetto il numero id nella textbox1 succede che i dati del cliente sono di sua appartenenza , però anche le altre text box esprimono tutte lo sesso indice .
Mi spiego meglio :
1 ) Nella prima TextBox scrivo (0001) Nella Seconda (TextBox) mi compare "Gonzales" Nella terza (TextBox) mi compare "Maurizio" mentre dalla quarta textbox in poi mi vengono riportate (Gonzales Maurizio Viale degli Ulivi 5 Torino ) ecc...!
2 ) Mentre io vorrei che ad ogni Textbox comparisse solo il dato di Appartenenza (Nome - Nome) ; (Cognome - Cognome) ; (Indirizzo - Indirizzo) ecc...!
Io premetto che per fare ciò avevo inserito questo pezzetto di codice che e poi quello che mi crea questo problema come posso risolvere il tutto :
Codice: Seleziona tutto
  Do Until (EOF(1))
    Line Input #1, Stringa
    If InStr(Stringa, UserForm1.TextBox1) > 0 Then
        'Stop
       A = InStr(Stringa, ",")
        B = InStr(A + 1, Stringa, ",")
        C = B - A
       
        D = B - A
        E = B - A
        F = B - A
       
        G = B - A
        H = B - A
        I = B - A
        J = B - A
        K = B - A
       
        TextBox2 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox3 = Replace(Mid(Stringa, B + 1), Chr(34), "")
       
        TextBox4 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox5 = Replace(Mid(Stringa, B + 1), Chr(34), "")
       
        TextBox6 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox7 = Replace(Mid(Stringa, B + 1), Chr(34), "")
       
        TextBox8 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox9 = Replace(Mid(Stringa, B + 1), Chr(34), "")
       
        TextBox10 = Replace(Mid(Stringa, A + 1, C - 1), """", "")
        TextBox11 = Replace(Mid(Stringa, B + 1), Chr(34), "")
       
       
        GoTo Esci


Grazie sin da ora per tutto l'aiuto che riuscirete a darmi in merito
A.Maurizio
Utente Senior
 
Post: 116
Iscritto il: 02/08/13 15:39

Sponsor
 

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 05/12/16 23:21

Mi permetto di pensare che molte cose si semplificherebbero se invece di importare ogni volta dal file txt tu lo importassi una tantum in un foglio di servizio del tuo file excel.
Avresti quindi tutti i campi gia' separati e a portata di mano e non devi elaborare testi.

Ci sono difficolta' che impediscono /non raccomandano di usare questo approccio?

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 06/12/16 09:17

Hai Ragione Anthony però la mia era una richiesta legittima ; Sempre per riuscire ad aumentare il mio bagaglio di nozioni sull'uso del VBA.
Per il resto : Per quanto riguarda la Funzione ; da File Txt ad Excel e viceversa , sono già riuscito a ricreare questo tipo di problema.
Però visto che qualche anno fa qualcuno ma non ricordo chi e dove , mi diede questa utility o codice che sia; Ora mi sarebbe tornato utile approfondire l'argomento .
Nel comprendere come si potrebbe fare se : Nel mio caso aumentassi le TextBox inserite nell'Userform ; Per qui anziché averne solo Tre , per i tre campi richiesti dell'epoca.
Volessi ricavare tutto il resto dei Report per il singolo cliente , tutto qui .
Sicuramente per te sarebbe un gioco da ragazzi ; io ci ho provato ma continuo a battere il muso contro un muro e non capisco ne dove sbaglio , e ne come modificare il tutto.
Grazie comunque del tuo Interessamento e dei tuoi proverbiali consigli , Sinceri saluti da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi patel » 06/12/16 13:23

E consentito su questo forum utilizzare 2 account diversi ?
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 06/12/16 21:14

Grazie Patel
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 06/12/16 23:13

Grazie Patel
Si, ma non hai spiegato perche' hai usato un account diverso da quello iniziale! Smarrita nuovamente la password di accesso??

Capisco la richiesta... Anche io spesso non mi limito alla via piu' semplice.
Per rispondere al quesito allora servira' un file txt di esempio, con la struttura giusta e contenuto coerente; bastano pochi record.
In linea di massima, avendo piu' o meno capito che si tratta di un formato "csv" (campi separati da virgola), procederemo con uno "split" di riga, che ci rendera' disponibili nella matrice risultante tutti i campi presenti nel singolo record.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 07/12/16 21:08

Ciao Anthony47 come stai : Ascolta per prima cosa un grazie sincero per il tuo Supporto in quanto sei ancora pur sempre il migliore .
Poi per il resto ti porgo il File TXT con i Campi da te richiesto , e poi c'è un altro file sempre da scaricare che espone il problema in quanto ci sono le textbox dinamiche.
L'userform in questione e quello centrale il numero 2 , il resto erano prove prese qua e la.
E mentre che ci sono ti chiedo anche questo favore : Quando lo aprirai ti accorgerai subito che le textbox sono 15 ed e il numero massimo che io intendo voler impostare.
Però la mia richiesta e questa oltre a fare tutto il resto non c'è la possibilità di creare una routine che mi dia la possibilità di visualizzare solo quelle textbox da me desiderate e disattivare tutte le altre .
Porto un Esempio Pratico Ahora : Sappiamo che abbiamo al massimo 15 Textbox dinamiche a disposizione , Però l'utente Finale di queste 15 ne sceglie solo "8" ; E possibile fare in modo che le restanti "7" Textbox non siano resi visibili.
Ti chiedo questo perché : Detto in questi termini io l'avrei anche già risolto tale procedura.
Però visto che nel mio caso le Textbox Dinamiche vengono chiamate prima che si aprà il mio Userform per esporre il tutto, sono obbligato a dichiararle tutte per aver l'effetto desiderato in caso contrario continua a darmi errore di tutto e di più.
Ecco spiegato il perché di questa mia richiesta.
Poi Senza diventar pazzo al posto mio , Se vuoi e sempre che si possa , Se mi vuoi dare una mano anche in questo; Bene
In caso contrario non ti preoccupare una qualche soluzione la troverò anche io.
Stavo anche già pensando di poter mettere un Contatore come ad Esempio : (Ho un If Then - Oppure un bel For Next)
Come "Se vengono chiamate (8) Thextbox allora disattiva le altre (7) No...!
Ciao e Buona Serata .

(p.s) Link per Scaricare il tutto sono : https://app.box.com/s/l7ofrgkxqkph21w7s4ud27kchtcqggyh

2 ) https://app.box.com/s/0wchyikydwmx0g14bky62n0w5ibq9o9h
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 08/12/16 01:09

Ci sono varie questioni poste un po' qua e un po' la, neltuo messaggio.

Partiamo dal creare una userform contenente un numero variabile di Textbox, per cui io ti suggerirei il seguente approccio:
Crea una tabella di due colonne che descrive i possibili textbox: descrizione da assegnare in prima colonna mentre nella colonna adiacente inserirai 1 se quel textbox deve esistere o lasci vuoto. Assegna a questa tabella il nome "Descriz" (tramite Gestione Nomi).
Poi modifica le tue Sub Scrivi_Text e Sub Scrivi_Label come segue:
Codice: Seleziona tutto
Sub Scrivi_Text()
Dim tbDescr As Range
Dim ZZ As Long

'On Error Resume Next
Dim ctrl As Control
Dim X As Byte

'X = Val(Me.Label1.Caption & "")

'k = X


Set tbDescr = Sheets("Foglio3").Range("Descriz")
For k = 1 To tbDescr.Rows.Count
   
    If tbDescr.Cells(k, 2) = 1 Then
        ZZ = ZZ + 1
        Set ctrl = Me.Controls.Add("forms.textbox.1", "textbox" & k, True)
        ctrl.Name = "Textbox" & k
        ctrl.Move 80, ZZ * ctrl.Left + 25
        ctrl.Move 80, ZZ * ctrl.Top + 5
    End If
Next k

Me.Height = ctrl.Top + ctrl.Height + 50

End Sub

Codice: Seleziona tutto
Sub Scrivi_Label()
Dim tbDescr As Range
Dim ZZ As Long

'On Error Resume Next
Dim ctrl As Control
Dim Y As Byte

'Y = Val(Me.Label2.Caption & "")

'k = Y
Set tbDescr = Sheets("Foglio3").Range("Descriz")
For k = 1 To tbDescr.Rows.Count
    If tbDescr.Cells(k, 2) = 1 Then
        ZZ = ZZ + 1
        Set ctrl = Me.Controls.Add("forms.Label.1", "Testo" & k, True)
        ctrl.Move 5, ZZ * ctrl.Left + 25
        ctrl.Move 5, ZZ * ctrl.Top + 5
        ctrl.Caption = tbDescr.Cells(k, 1)
    End If
Next k

End Sub

Tra le altre cose ho tolto la deprecabile istruzione On Error Resume Next: il codice non e' previsto che vada in errore, quindi l'istruzione non deve starci altrimenti nasconde eventuali magagne.
In questo modo, usando questa tabella
Immaginecaricare immagini

ho ottenuto la seguente form:
Immaginehost image

Ogni textbox puo' essere indirizzato come
Codice: Seleziona tutto
UserForm2.Controls("textboxX")
dove X e' il numero di posizione di quel controllo nella tabella; nell'esempio fatto il textbox " Tel Casa" si chiamera' "textbox6" anche se e' il quinto, mentre non esistera' nessun "textbox4"

Parliamo ora di come importare dal file txt piu' campi.
Come avevo immaginato, il tuo e' un file con campi separati da virgola, alias "CSV".
Ora mi sembra di capire che tu usi il campo "Id_Cliente" per identificare da quale record prelevare gli altri campi.
Il seguente codice consente di popolare in sequenza i textbox presenti nella userform, supponendo che la sequenza dei textbox creati col metodo di prima sia la stessa dei campi contenuti nel file txt:
Codice: Seleziona tutto
Private Sub Cmd_Trova_Cliente_Click()
ChDir ThisWorkbook.Path
Close #1

    myFile = ThisWorkbook.Path & "\Database.txt"
    'myFile = Application.GetOpenFilename("File di testo,*.txt")
    If myFile = "Falso" Then
        MsgBox "Nessun File Selezionato.", vbCritical + vbOKOnly, "Attenzione...!"
        Exit Sub
    End If

Open myFile For Input As #1
Do Until (EOF(1))
    Line Input #1, stringa
    stringa = Replace(Replace(stringa, """,""", "#", , , vbTextCompare), Chr(34), "", , , vbTextCompare)
    mysplit = Split(stringa, "#", , vbTextCompare)
    If Me.Controls("textbox1") = mysplit(0) Then
    On Error Resume Next
        For i = 1 To UBound(mysplit)
            Me.Controls("textbox" & i + 1) = mysplit(i)
        Next i
    On Error GoTo 0
    Exit Do
    End If
Loop
Close #1
End Sub
Sostituisce la tua attuale Private Sub Cmd_Trova_Cliente_Click
Nota la presenza di On Error Resume Next; infatti, per quanto detto precedentemente (creazione di un numero variabile di textbox) alcuni textbox mancheranno all'appello, da qui l'uso di Resume Next per convivere con questa situazione normale.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 08/12/16 11:59

Ciao Anthony come sempre sei stato più che bravo ed approfondito nello spiegare il tutto , peccato solo che in questo periodo come del resto tutti i miei Anni di lavoro sono da sempre cosi ; io non abbia molto tempo per provare a mettere insieme i pezzi da te indicati , ma sicuramente e tutto molto funzionale come sempre.
In quanto ho molti Ragazzi che provano per la prima volta dei Saggi da Provare il che daranno ho meno loro la possibilità di entrare nel mondo musicale artistico.
Detto questo : che dire e tutto molto bello come sempre , l'unica cosa che ancora non mi e chiara e sè l'immagine del foglio e puramente indicativo o devo riportare anche io tale modifica.
In quanto ho già creato la mia Dase degli indirizzi Utente sul foglio; però come sempre le ho impostate in modo lineare in modo tale che ogni voce abbia la sua colonna .
In quanto e la Riga che fa il cliente (1,2,3,4) ecc...!
E poi ci avevo già pensato anche io a fare un prio Userform che mi desse la possibilità di Scegliere usando la tecnica del Drag end Drop
Le voci che comporranno il Database attraverso le loro label .
2 ) Poi inserisco in una Textbox il numero di textbox Dinamiche da usare per comporre il tutto.
3 ) Ed in fine premo un Pulsante per Passare il tutto all'userform 2 e qui viene completato il tutto .
Se ti può interessare questo e il mio link per visualizzare il tutto :
https://app.box.com/s/mv6aj4s7g32i0smw32u4kh338mhjb3av

Grazie infinite Sei proprio un Amico Saluti sinceri da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 10/12/16 03:07

La tabella che ti ho allegato e' un esempio di come si puo' impostare il lavoro: la tabelle dichiara la didascalia che compare accanto al textbox (la prima colonna), il nome del textbox (tramite la sequenza secondo cui sono elencati), se il textbox deve essere disegnato oppure no (1/0)
Interessante anche il tuo metodo, a conferma che ci sono 100 modi diversi per fare le stesse cose.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 10/12/16 18:50

Non so se mi è ancora possibile farti i miei più sinceri complimenti : in quanto , ho qualche ora di tempo a mia disposizione per qui né ho Approfittato per provare il tuo a dir poco meraviglioso suggerimento e devo dire che e fantastico ; Per meglio dire non ho parole per esprimere tutto ciò che penso di buono su di te .
Grazie ; Grazie ; Grazie ; Sinceri Saluti e Buon Fine settimana a te e Famiglia da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 11/12/16 20:57

Ciao Anthony ascolta : Capisco che sono un rompini , ma se io sapessi anche solo la metà di quello che sai tu come programmatore di sicuro non avrei bisogno di chiederti queste cose .
Per qui il mio ancora problema e questo :
Ciò che hai fatto tu torno a ripetere e un Capolavoro; però non si potrebbe ottenere la stessa cosa che hai fatto tu solo a livello di Userform.
Mi spiego meglio : Tu mi hai gentilmente dato questa procedura che va benissimo a livello di Foglio che e questa :

Codice: Seleziona tutto
Sub Scrivi_Text()
Dim tbDescr As Range
Dim ZZ As Long

'On Error Resume Next
Dim ctrl As Control
Dim X As Byte

'X = Val(Me.Label1.Caption & "")

'k = X

Set tbDescr = Sheets("Foglio3").Range("Descriz")
For k = 1 To tbDescr.Rows.Count
   
    If tbDescr.Cells(k, 2) = 1 Then
        ZZ = ZZ + 1
        Set ctrl = Me.Controls.Add("forms.textbox.1", "textbox" & k, True)
        ctrl.Name = "Textbox" & k
        ctrl.Move 80, ZZ * ctrl.Left + 25
        ctrl.Move 80, ZZ * ctrl.Top + 5
    End If
Next k


E fin qui nulla da ridire: Però non si potrebbe ovviare a tutto ciò trattandosi di Label e Textbox Dinamiche e ricavare la stessa cosa a livello di Userform.
Intendo dire : Ok la ("Descriz") a livello di Foglio, ma il Vero ho falso per visualizzare le label o me già scelte in precedenza mi sembra un po troppo ho no...!
Per qui mi chiedevo non si potrebbe ottenere la stessa cosa a livello di userform senza l'aggiunta delle (1) per vero o falso.
Grazie ancora per la tua proverbiale pazienza , Ciao da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 12/12/16 10:27

Insomma vorresti fare un ibrido tra la tua soluzione e quanto ho proposto io.
Quello che non mi e' chiaro, col tuo sistema, e' come pensi poi di indirizzare i singoli textbox, visto che e' l'utente, in qualche fase dopo l'apertura del file, che decide quali campi inserire e quali no; in questa circostanza non capisco come il vba potra' poi in modo diretto indirizzare i vari campi.
Come pure mi sembra macchinoso che a ogni apertura del file l'utente debba descrivere il suo tracciato.

Comunque, volendo proseguire col tuo criterio, aggiungendo le due righe marcate +++ all'interno della Sub Code_Text di Userform2 potrai almeno ridimensionare la form in funzione dei textbox presenti:
Codice: Seleziona tutto
Ctrl.TextBox
Next K
Me.Height = Me.Controls("TextBox" & (K - 1)).Top + 50    '+++
If Me.Height < 240 Then Me.Height = 240                  '+++
Me.Controls("textbox1").Font.Size = 11


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 13/12/16 07:43

Grazie Ifinite Anthony e scusami sè ti ho chiesto tutto ciò innescando una tua Ilarità nei miei confronti .
Però credimi il mio era solo un pensiero momentaneo , per escludere senza le forme di 1/0 (Vero/Falso) in quanto diventa tutto più difficile sapere come indirizzare e memorizzare la parola (Descriz) all'interno del menu (Gestioni Nomi) secondo te e possibile eseguire questa operazione in vba senza doverlo fare a mano tutte le volte.
Mi spiego meglio , anche io dopo una attenta riflessione e dopo svariati tentativi nel risolvere da me ciò che poi ti avevo chiesto; Mi sono accorto che per le mie possibilità non sarebbe mai stato possibile, ma che era una Richiesta da parte mia nei tuoi confronti da (Fuori di Testa).
Per qui sono poi arrivato ad una conclusione (Pseudo Vera) che e poi questa : Io posso da me creare una Routine che in pratica una volta premuto un Tasto mi faccia comparire partendo da una Determinata cella di un Foglio qualunque i nomi dei report che appartengono al Database che l'utente finale desidera usufruire con la tecnica del Drag end Drop a livello di form come ti ho fatto vedere io .
Poi sfruttando il tuo Aiuto Precedente creo il tutto e fin qui tutto Ok; Per qui ora non solo risulterebbe tutto molto più leggibile e fluido, ma resterebbe da risolvere solo un ultimo problema che è per l'appunto sapere come creare quella Funzione che possa scrivere in Automatico la Variabile (Descriz) nella (Gestioni Nomi).
Te la sentiresti Anthony di mettere da parte la rabbia accumulata nei miei confronti per le mie richieste poco Ortodosse, e aiutarmi ancora in merito Grazie Infinite , Fai pure con Calma Sinceri Saluti da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 13/12/16 15:45

Ciao Anthony : Ascolta ti chiedo un ultimo Aiutino puoi non ti disturbo più per molto tempo Promesso.
Ahora : Sono riuscito da me atrovare il sistema per rinominare delle celle adiacenti tutte
sulla stessa riga, in quanto ho trovato su di un libro una cosa più o meno analoga per qui
messa in pratica mi a dato tale risultato.
Detto questo non mi resta altro che chiederti questo tuo piccolo aiutino per risolvere questo
problema.
Ahora sè tu dai un occhiata al mio programma che ti ho appena inviato noterai che tutte le
cella del Foglio 1 a partire dalla Cella "A2" fono alla Cella "O2" si riempiono con i nomi che
si trovano nelle Label dell'userform; Appartenenti ai report del cliente X .
Ahora quello che a me servirebbe solo più , Sarebbe questo :
Sempre prendendo come esempio il mio programma che ti ho appena inviato , a partire dalla cella
"A3" fino alla Cella "O3" io manualmente ho inserito i numeri "1" come da tuo Programma.
Ma sè io Volessi inserirli usando il VBA creando una Funzione che prenda in considerazione le
celle della Seconda riga , io come dovrei comportarmi per creare il tutto in modo Automatico.
Mi spiego meglio :
Mi potrebbe bastare dire semplicemente :"Se Cella(A2) e > 0" allora "Cella(A3).Value=1" in caso
contrario non scrivere nulla; Ho dovrei scrivere altro.
Grazie per tutto l'aiuto che sicuramente riuscirai a darmi in merito, Ulteriori saluti da Maurizio

(p.s) Link per scaricare il tutto : https://app.box.com/s/2wu707gbuvq5ol5wb1nrqx0wipf8hh3y
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 14/12/16 00:02

Grazie Infinite Anthony e scusami sè ti ho chiesto tutto ciò innescando una tua Ilarità nei miei confronti
No, non vedo "perchè" avrei dovuto prenderti in giro o arrabbiarmi; ne' vedo "dove" l'avrei fatto.
Se alludi a "Insomma vorresti fare un ibrido tra la tua soluzione e quanto ho proposto io" allora era un tentativo di sintetizzare la mia interpretazione della tua richiesta, cosi' si capiva anche a cosa era relativa la mia successiva risposta.

Andiamo avanti con serenita', dunque; pero' bisogna capirsi...
Io non ho capito se quello che hai fatto e' un lavoro per te o se dovrebbe servire a qualcun altro.
La mia impressione e' che dovrebbe servire a qualcun altro, visto che gli ipotetici campi della userform costruibile spaziano da Fornitore a NomeImpiegato a NumeroImpiegati a NumeroDiSerie a StatoCivile DataDiBonifico e tante altre; come se fosse un embrione di una soluzione per tutte le esigenze.
In questo pero' io vedo un paio di lacune pesanti:
-e' l'utente che si compone la sua userform all'avvio del programma; ma secondo me un addetto all'ufficio acquisti deve lavorare con una form che non si inventa lui a suo piacimento; idem l'addetto alla gestione del personale; idem l'addetto alle spedizioni.
-siccome ognuno si compone il suo ambiente di lavoro, il programmatore non sa se il contenuto di del terzo Textbox e' un numero d'ordine o un numero di telefono, e mi chiedo come fara' a trattarlo.
-siccome l'addetto agli acquisti si inventa giorno per giorno la sua form, non siamo certi che quando emette un ordine abbia inserito anche (mettiamo) la data di consegna e il riferimento all'offerta del fornitore; come si controllera' il comportamento del fornitore?
Non parlo della complessita' del database sottostante, che dovra' necessariamente comprendere tutti i potenziali campi che l'utente di turno puo' inserire nella sua form, perche' gia' la difficolta' a incrociare il singolo campo con la singola form mi pare una bella complicazione.
Insomma e' di bell'effetto la possibilita' di comporre una form, ma e' quello che viene dopo a posizionarsi tra il difficile e il difficilissimo.

Secondo me e' giusto prevedere un database che includa i campi comuni a tutti gli utenti, ma poi ogni addetto deve avere la sua form da compilare e il programma (le macro sottostanti) deve controllare a posizionare di conseguenza quelle informazioni da /verso il database. E non ha senso impostare un database con dei campi in esubero rispetto a quelli che servono nell'applicazione, salvo che tale disegno sia incluso per prevedere l'introduzione di nuove prestazioni a costi contenuti (parlo di "costo", non di "prezzo di vendita").

Per qui sono poi arrivato ad una conclusione (Pseudo Vera) che e poi questa : Io posso da me creare una Routine che in pratica una volta premuto un Tasto mi faccia comparire partendo da una Determinata cella di un Foglio qualunque i nomi dei report che appartengono al Database che l'utente finale desidera usufruire con la tecnica del Drag end Drop a livello di form come ti ho fatto vedere io .
Poi sfruttando il tuo Aiuto Precedente creo il tutto e fin qui tutto Ok; Per qui ora non solo risulterebbe tutto molto più leggibile e fluido, ma resterebbe da risolvere solo un ultimo problema che è per l'appunto sapere come creare quella Funzione che possa scrivere in Automatico la Variabile (Descriz) nella (Gestioni Nomi)
Questa domanda mi fa pensare che hai immaginato di usare la tua modalita' del drag and drop per progettare e descrivere le form degli utenti; "Bene" perche' questo sarebbe stato anche il mio prossimo suggerimento. Per intenderci: quando vuoi creare la form dell'addetto agli acquisti usi il tuo drag and drop; quando poi pero' premi il tasto "Crea DataBase" questo va a compilare una tabella come quella che avevo creato io a mano, cosicche' l'utente degli Acquisti lavorera' poi con la userform composta apposta per lui e quello alle Spedizioni con un'altra composta apposta per lui.

Tuttavia mi pare che "approfittando" della mia lentezza a rispondere sei andato avanti:
Sono riuscito da me a trovare il sistema per rinominare delle celle adiacenti tutte
sulla stessa riga, in quanto ho trovato su di un libro una cosa più o meno analoga per qui
messa in pratica mi a dato tale risultato.
Detto questo non mi resta altro che chiederti questo tuo piccolo aiutino per risolvere questo
problema.
Ahora sè tu dai un occhiata al mio programma che ti ho appena inviato noterai che tutte le
cella del Foglio 1 a partire dalla Cella "A2" fono alla Cella "O2" si riempiono con i nomi che
si trovano nelle Label dell'userform; Appartenenti ai report del cliente X .
Ahora quello che a me servirebbe solo più , Sarebbe questo :
Sempre prendendo come esempio il mio programma che ti ho appena inviato , a partire dalla cella
"A3" fino alla Cella "O3" io manualmente ho inserito i numeri "1" come da tuo Programma.
Ma sè io Volessi inserirli usando il VBA creando una Funzione che prenda in considerazione le
celle della Seconda riga , io come dovrei comportarmi per creare il tutto in modo Automatico.
Mi spiego meglio :
Mi potrebbe bastare dire semplicemente :"Se Cella(A2) e > 0" allora "Cella(A3).Value=1" in caso
contrario non scrivere nulla; Ho dovrei scrivere altro.

Ma questa non l'ho capita. Perche' secondo me tu dovresti avere in riga 2 (ma perche' metti le informazioni in riga, e non in colonna?) l'elenco di tutti i campi potenzialmente presenti nel database, e poi la macro (quella del pulsante Salva su Foglio Excel) dovrebbe mettere gli "1" in riga 3 in corrispondenza dei campi che sono presenti sulla userform.

Ora se questo e' il tuo obiettivo, assodato che in riga2, da A2 verso destra ci vanno "Tutte" le intestazioni dei campi del database, potrai mettere gli 1 ai campi presenti sulla form con questo codice, che sostituisce la tua attuale Sub MultiArea:
Codice: Seleziona tutto
Sub MultiArea()
Dim RangeAll As Range, myMatch, lContr As Control
'
With Sheets("Foglio1")
    Set RangeAll = .Range(.Range("A2"), .Cells(2, Columns.Count).End(xlToLeft))
End With
RangeAll.Offset(1).ClearContents
For Each lContr In UserForm1.Controls
I = I + 1
    If TypeName(lContr) = "Label" Then
        myMatch = Application.Match(lContr.Object, RangeAll, 0)
        If Not IsError(myMatch) Then
            RangeAll.Cells(2, myMatch).Value = 1
'            RangeAll.Cells(3, myMatch).Value = lContr.Name
        End If
    End If
Next lContr
End Sub


Questo presuppone che non ci siano label con lo stesso testo (es Codice ID) ma che ogni testo sia diverso (es Codice ID1, Codice ID2)

Sperando che quanto proposto vada nella direzione che avevi in mente...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 14/12/16 16:43

Ciao Anthony non per niente continuo a Sostenere da tempo che tu sei il Migliore senza nulla togliere ad altre persone.
io Tuo ultimo suggerimento e proprio quello che avrei voluto fare io senza più disturbarti; Anche se a dire il Vero a tempo Perso e usano una Funzione Poco ortodossa che portava allo stesso risultato lo poi trovata anche io , impostando tante If Then quante mi servivano allo scopo , cioè (15) eseguite in questo modo :
Codice: Seleziona tutto
 Sub Scrivi_Uno_Se_e_Vero()
'On Error Resume Next

If Foglio2.Range("A2").Text > "0" Then
Foglio2.Range("A3").Value = 1
End If

If Foglio2.Range("B2").Text > "0" Then
Foglio2.Range("B3").Value = 1
End If
end sub


Ripeto Sarà Poco Ortodosso Ma Serve allo Scopo.
Grazie infinite di Tutto Cuore per il tuo Impegno e come ti Avevo Promesso ti Lascio Per Molto tempo Al Tuo Vero Lavoro di tutti i Giorni.
Grazie ed e stato un Vero piacere aver fatto la tua Conoscenza anche sè nella realtà non ci siamo mai incontrati di Persona , Sinceri Saluti da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 18/12/16 10:30

Ciao Anthony Come stai !
Ascolta nè avrei fatto molto a meno , perché una parola data e pur sempre una Cambiale scritta no ...!
Però visto che senza di te io in fatto di Programmazione sono perso , Vorrei semplicemente chiederti di riguardare questo progetto in quanto non capisco il perché ; se lo eseguo in un userform con textbox e Label Inserite a Mano mi funziona tutto alla perfezione, sè però tento di inserire al suo posto le (Label e le Textbox Dinamiche) mi compare questo .
Dove secondo te sbaglio.
(P.s) Il link per Scaricare il tutto e questo : https://app.box.com/s/wd14c15xb3iu1ot9ww48qk7xb5h75eoz

Grazie infinite
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Maury170419 » 19/12/16 10:57

Ciao Anthony Forse Sono Ancora in Tempo Per Mantenere la mia Promessa Fatta L'altro Giorno , Di non disturbarti più.
In quanto sono riuscito da me a Risolvere il mio Problema , Ora e Tutto Ok .
Grazie Comunque dei tuoi Proverbiali Insegnamenti Sinceri Saluti E Buone Feste a te e Famiglia Ciao da A.Maurizio
Auguri di Buone Feste anche a Tutti Voi Dello Staff di PC_Facile
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Ricavare Dati Separati scritti in un File Txt

Postdi Anthony47 » 19/12/16 17:40

Come hai notato sono stato assente dal forum per qualche giorno, sono contento che nel frattempo hai risolto da solo.
Contraccambio gli auguri per le imminenti festivita'
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Ricavare Dati Separati scritti in un File Txt":


Chi c’è in linea

Visitano il forum: Marius44 e 35 ospiti