Sviluppare funzionalita su Microsoft Office con VBA ELENCO PREZZI da PDF a EXcel

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 44 totali)
  • Autore
    Articoli
  • #37543 Score: 0 | Risposta

    Dodi
    Partecipante
      2 pts

      Ciao a tutti, 
      Questa volta ho bisogno spudoratamente di voi, 
      In questi giorni sono stati emessi i nuovi elenchi prezzi dei lavori degl'enti pubblici.

      Come  consuetudine li emettono in formato PDF,
      E anche su richiesta non rilasciano le versioni editabili,
      Quindi vengo al punto.
      vi spiego cosa faccio e cosa mi serve,
      apro il pdf copio tutti i testi e li incollo a partire dalla cella A1, premetto li incollo con formattazione testo.
      Il risultato che ottengo e quello sul foglio1 del file allegato,
      In pratica me li dispone in colonna per ogni riga copiata dal pdf. 
      E fin qui penso di aver Ben reso l'idea,
      Poi cosa faccio aggiungo altre colonne dove con il 'SE' evidenzio con i colori  in modo univoco articolo, descrizione, unita' misura, prezzo unitario e % manodopera,  
      Questo e l'unico modo che mi è  venuto in mente. 
      Spero a voi venga in mente un metodo migliore. 
      Poi cosa faccio filtro per colore e faccio copia e incolla sul foglio Elenco,
      Ma ho il problema con la descrizione e Cioè celle evidenziate in blu, avvolte sono anche 10 o 15 righe, quindi il numero di righe non sono mai costanti, essendo su più righe non riesco a unire sul foglio elenco,  mi servirebbe il vostro aiuto per un codice che mi faccia tutto il lavoro di copiare per colori e incollarli su un altro foglio denominato "Elenco", disponendo come da risultato da me proposto sul foglio elenco, vi ho fatto 2 articoli per rendere l'idea, nel campo  descrizione per ottenere il risultato voluto ho usato la formula concatena ma facendolo manualmente e un delirio, faccio presente che non sempre hanno lo stesso numero di righe, per quello mi e' venuto in mente i colori. Quindi su questo punto mi tornerebbe utile un codice che riconosce i colori delle celle. Disponendomi in modo corretto il tutto.
      A me e venuto in mente qsto modo di strutturare il tutto, anche perché non sono tutti uguali i listini e non rispettano la medesima disposizione, mi aiuto con i colori, rendendo una codifica per colore,   ora avrei bisogno della vostra sapiente collaborazione per un codice, o soluzione alternativa  che mi aiuta a trasformare il tutto nel modo in cui mi serve.
      Qualcuno di voi mi potrà dire di provare con i convertitore di pdf in excel, li ho già provati tutti, ma non mi tabula in modo corretto il tutto, e rischio di fare arrosti con i prezzi,

      Spero vivamente che voi sapete darmi una soluzione che mi aiuta, considerate che mi ritrovo più di 2000 pagine su più tomi di elenchi prezzi. 
      il vostro aiuto mi toglierebbe parcchie castagne dal fuoco, altrimenti se continuo a fare copia e incolla, mi servirebbe un anno, e poi ci sarebbero i nuovi listini e dovrei ricominciare da capo, quindi perderei tempo solo a trascrivere e convertire pdf in excel. 
      Oltre al fatto che per ogni gara d'appalto ci sono i listini dedicati e descrittivi del lavoro in appalto. 
      Quindi starei li solo a perderei tempo, 
      spero che un giorno le associazioni costruttori obbligano le stazioni appaltanti a rilasciare elenchi prezzi e computi editabili per dar modo ai professionisti di usare il tempo a studiare in dettaglio il lavoro e non a  perdere tempo a convertire e copiare i PDF in excel.

      Aiutoooooooooooo 
      Ve ne sarei gratooooooo

      Allegati:
      You must be logged in to view attached files.
      #37545 Score: 0 | Risposta

      patel
      Moderatore
        51 pts

        Dodi ha scritto:

        Qualcuno di voi mi potrà dire di provare con i convertitore di pdf in excel, li ho già provati tutti,

        Hai provato anche quelli a pagamento ? puoi allegare un pdf ?

        #37546 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Dodi ha scritto:

          sono stati emessi i nuovi elenchi prezzi dei lavori degl'enti pubblici

          Parli del prezziario per gli oneri della sicurezza da inserire nei DUVRI? Io ce l'ho già in formato Excel se ti serve.

          #37547 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Dodi ha scritto:

            spero che un giorno le associazioni costruttori obbligano le stazioni appaltanti a rilasciare elenchi prezzi e computi editabili

            Su questo concordo, anche noi (e siamo un ente pubblico) diventiamo matti quando si tratta di mettere mano a elenchi di questo tipo. E' incomprensibile perché non vengano rilasciati formati da cristiani (però ho visto dei csv).

            Per tornare al punto. Tu dici:

            Dodi ha scritto:

            un codice che mi faccia tutto il lavoro di copiare per colori e incollarli su un altro foglio

            ma secondo me tu questo sai già farlo. Ti basta scorrere con pazienza ogni riga e controllare la sua proprietà Interior.Color no?

             

            #37548 Score: 0 | Risposta

            Dodi
            Partecipante
              2 pts

              ciao patel, 

              ho provato in tutti i modi, anche perchè credetemi e tanta roba da convertire, 

              quindi in azienda non era un problema avere un convertitore a pagamento, ma come detto non riesco ad ottenere il risultato in modo corretto con il rischio di fare disastri, 

               

              ti allego uno dei file PDF da convertire come da te chiesto, 

              e ti allego anche screen per farti capire quanti elenchi prezzi mi servono, 

              sono elenchi emessi da RFI oltre al fatto che a stretto giro escono anche tariffe regionali e per provincia, quindi non potete capire che disastro. 

              fino a un paio di anni si usavano abitualmente sempre i soliti prezziari, invece da quest'anno tutti gli enti sono obbligati ad emettere tariffari aggiornati. 

              quindi mi serve trovare n modo univoco che posso utilizzare per tutti gli aggiornamenti. 

              mentre per vecchio frac 

              non è un elenco prezzi standard sicurezza ma come detto sono prezziari ferroviari, con loro codifica, articoli, descrizioni e prezzi. 

              l'unico modo che mi è venuto in mente era la soluzione e metodo nel mio file. 

              devo fare per un oretta un lavoro di pulizia, di evidenziare con colori, 

              e a questo punto che poi impostato il foglio come da me fatto, servirebbe un codice che mi mette in bella tutto su un altro foglio. 

              sul mio file excel postato ho inserito solo alcune righe per velocizzare la mia richiesta di aiuto.

              Puoi gentilmente propormi e postarmi la soluzione? 

              come detto ho il problema del concatena. 

               

              te ne sarei grato- 

               

              ma considera che come detto nella voce descrizione possono esserci più di 2 righe. 

               

               

               

               

              Allegati:
              You must be logged in to view attached files.
              #37551 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Comunque la richiesta è meno banale del previsto... ci sto lavorando quindi dammi fiducia 🙂

                #37552 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Dodi ha scritto:

                  Puoi gentilmente propormi e postarmi la soluzione? 

                  Ho scritto prima di aver letto il tuo post. Immagino comunque che il lavoro di pulizia sia una bella sfacchinata.

                  #37553 Score: 0 | Risposta

                  Dodi
                  Partecipante
                    2 pts

                    Sono più che fiducioso che trovi la soluzione e mi dai una mano, altrimenti faccio prima a spararmi.🤣🤣🤣🤣🤣

                    cmq ricordati la cosa più importante che la descrizione può essere su più righe, rispetto a quanto da me postato sul file excel. La pulizia e un lavoro che cmq richiede circa un oretta, poi evidenzio, controllo e qui dovrebbe entrare in gioco il tuo aiuto o chi ha una soluzione più snella, 

                    #37554 Score: 0 | Risposta

                    Dodi
                    Partecipante
                      2 pts

                      Poi se vedi il mio pdf e ti viene in mente altro modo ben venga, 

                      #37555 Score: 0 | Risposta

                      patel
                      Moderatore
                        51 pts

                        Ho tentato con Pdf Element, la conversione in docx riesce bene a parte qualche casella di testo vuota e sovrapposta ai dati, ma comunque facilmente eliminabile. La conversione in excel è un disastro.

                        Mi dispiace ma non ti posso aiutare.

                        #37556 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          Io propongo questa soluzione che tiene conto delle righe multiple (bel casino) e delle righe mancanti (altro bel casino 🙂 )

                          In questa prima stesura (tutta da testare) non ho badato alla bellezza del codice ma all'efficienza... fa schifo, scusate ma lo devo dire.
                          Un'ottimizzazione sarebbe necessaria ma non ho molto tempo perché fra poco devo andare e volevo essere produttivo 😉

                          Option Explicit
                          
                          Sub scan_by_color()
                          Dim cell As Range
                          Dim j As Long
                          Dim i As Long
                          Dim y As Long
                          Dim s As String
                          Dim coll1 As Object
                          Dim coll2 As Object
                          Dim coll3 As Object
                          Dim coll4 As Object
                          Dim coll5 As Object
                          Dim v As Variant
                          Dim c As Variant
                          
                              Worksheets("Foglio1").Select
                              y = 0
                              
                              Set coll1 = CreateObject("Scripting.Dictionary")
                              Set coll2 = CreateObject("Scripting.Dictionary")
                              Set coll3 = CreateObject("Scripting.Dictionary")
                              Set coll4 = CreateObject("Scripting.Dictionary")
                              Set coll5 = CreateObject("Scripting.Dictionary")
                              
                              For i = 2 To Range("A1").CurrentRegion.Rows.Count
                                  
                                  Set cell = Cells(i, 1)
                                  j = i
                              
                                  Select Case cell.Interior.Color
                                  Case 65535      'yellow
                                      s = ""
                                      Do While cell.Interior.Color = 65535
                                          s = s & cell & " "
                                          j = j + 1
                                          Set cell = Cells(j, 1)
                                      Loop
                                      y = y + 1
                                      coll1.Add "I" & y, s
                                      i = j - 1
                                  
                                  Case 12874308   'blu
                                      s = "": j = i
                                      Do While cell.Interior.Color = 12874308
                                          s = s & cell & " "
                                          j = j + 1
                                          Set cell = Cells(j, 1)
                                      Loop
                                      coll2.Add "I" & y, s
                                      i = j - 1
                                  
                                  Case 5287936    'green
                                      s = "": j = i
                                      Do While cell.Interior.Color = 5287936
                                          s = s & cell & " "
                                          j = j + 1
                                          Set cell = Cells(j, 1)
                                      Loop
                                      coll3.Add "I" & y, s
                                      i = j - 1
                                  
                                  Case 16247773   'light cyan
                                      s = "": j = i
                                      Do While cell.Interior.Color = 16247773
                                          s = s & cell & " "
                                          j = j + 1
                                          Set cell = Cells(j, 1)
                                      Loop
                                      coll4.Add "I" & y, s
                                      i = j - 1
                                  
                                  Case 15132391   'gray
                                      s = "": j = i
                                      Do While cell.Interior.Color = 15132391
                                          s = s & cell & " "
                                          j = j + 1
                                          Set cell = Cells(j, 1)
                                      Loop
                                      coll5.Add "I" & y, s
                                      i = j - 1
                                      
                                  End Select
                              Next
                              
                              
                              Worksheets("Listino").Select
                              Worksheets("Listino").Range("A2:E1000").ClearContents
                              For Each c In Array(coll1, coll2, coll3, coll4, coll5)
                                  i = 0
                                  j = Switch(c Is coll1, 1, c Is coll2, 2, c Is coll3, 3, c Is coll4, 4, c Is coll5, 5)
                                  For Each v In c
                                      i = Mid(v, 2)
                                      If v = "I" & i Then
                                          Worksheets("Listino").Cells(i + 1, j) = c(v)
                                      End If
                                  Next
                              Next
                              
                              
                              MsgBox "Done"
                          End Sub
                          #37557 Score: 0 | Risposta

                          Dodi
                          Partecipante
                            2 pts

                            Grazie Patel, 

                            In effetti è un disastro, e l'unico modo che mi era venuto in mente era quello di usare i colori e mettere in evidenza le cose che mi servono, 

                            Per poi creare un foglio pulito incolonnato in modo corretto, 

                            Ma anche li come detto devo fare Il lavoro di pulizia,

                            Insomma un disastro. Comunque grazie mille. 

                            #37558 Score: 0 | Risposta

                            Dodi
                            Partecipante
                              2 pts

                              Bhe devo dire che solo vedendo il codice posso asserire con estrema certezza che non sarei mai stato capace nemmeno lontanamente impostarlo, 

                              ora son fuori con mia figlia ma come rientro a casa lo provo, e ti aggiorno, intanto grazie 

                              ti aggiorno

                              #37559 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                In realtà è meno complicato di quello che sembra, perché in pratica ho pensato di spazzolare le righe della tabellona e in corrispondenza di ogni colore riempire un dizionario con i valori appartenenti a quel colore (i colori sono cinque come le colonne e anche i dizionari sono cinque). Poi scorro dizionario per dizionario e inserisco i valori nella cella giusta del foglio Listini.

                                La difficoltà incontrata è che possono esserci più righe per un colore (quindi appartengono allo stesso colore e il contenuto deve essere trattato unitariamente) e possono esserci colori mancanti (quindi nella resa nel foglio Listini bisogna saltare la relativa colonna).

                                Il lavoro più grosso e brutto lo hai tu in fase di pre-parazione del tabellone, con i colori adeguati (e sempre quelli: il codice è strettamente color-sensitive). Non ho guardato il pdf per vedere cosa si può fare ma se patel non ha ottenuto un risultato, è difficile che ci riesca io.

                                #37560 Score: 0 | Risposta

                                patel
                                Moderatore
                                  51 pts

                                  Ho convertito il pdf in docx con pdfelement e il docx in excel con https://convertio.co/it/docx-xlsx/

                                  il risultato allegato mi sembra buono

                                  Allegati:
                                  You must be logged in to view attached files.
                                  #37562 Score: 0 | Risposta

                                  Dodi
                                  Partecipante
                                    2 pts

                                    Patel grazie per il tentativo, 

                                    Il risultato proposto dal tuo file riesco ad ottenerlo facendo un semplice copia incolla, 

                                    Mi spiego meglio, apro il PDF seleziono tutto, faccio copia e poi lo incollo in excel, come testo nella cella A1,  ottengo presso a poco il tuo risultato, a me per utilizzarlo mi serve incolonnato come nel mio file allegato a inizio conversazione, il risultato finale deve essere quello del foglio elenco.

                                     

                                    Cmq grazie ma se ti viene in mente una soluzione con partenza dal tuo file e restituire il risultato da me richiesto ben venga, quando torno a casa provo la soluzione di vecchio frac, che ringrazio ancora. 

                                    #37563 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      272 pts

                                      Per comodità allego il mio file con la macro già confezionata. Su questo funziona, poi bisogna vedere in pratica con la tabella reale.

                                      Allegati:
                                      You must be logged in to view attached files.
                                      #37565 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        272 pts

                                        Ma è terribile trattare un testo come questo semimanualmente. Ci credo che impazzisci.

                                        Come hai ricavato le informazioni della terza e quarta riga? (U.M., importo e manodopera) perchè ho visto che l'U.M. nel file di test non è proprio precisa precisa.

                                        #37566 Score: 0 | Risposta

                                        Dodi
                                        Partecipante
                                          2 pts

                                          eccomi, ho avuto modo di testare il tuo codice, 

                                          funziona perfettamente, ma se trova una riga in bianco o vuota si ferma a quella riga, c'è un modo per fargli capire di proseguire? 

                                          ho provato ad inserire una riga vuota e alla riga in bianco si è fermato di copiare e trascrivere nel foglio Listino. 

                                          puoi prendere in considerazione il fatto che deve continuare? magari per interrompere in codice a fine elenco posso inserire una riga rossa, giusto per fargli capire di fermarsi e non continuare. 

                                          è fattibile? 

                                           

                                          #37567 Score: 0 | Risposta

                                          Dodi
                                          Partecipante
                                            2 pts

                                            le informazioni della terza e quarta riga le ho ottenute facendo una tabulazione, 

                                            poi con altre colonne faccio la funzione "SE"    esempio =SE(A1=1;1;0)

                                            e così via, poi filtro per numero e metto solo in primo piano quello che  mi serve e lo coloro, insomma un macello, ma devo uscirne vivo, altrimenti davvero e da suicidio con tutti i prezziari. 

                                            è l'unica soluzione che mi è saltata in testa, 

                                            per sopravvivere e non gettare la spugna subito. spero grazie a voi di venirne a capo. 

                                             

                                             

                                            #37568 Score: 0 | Risposta

                                            vecchio frac
                                            Senior Moderator
                                              272 pts

                                              Se la riga è bianca non la calcola perchè non ha uno dei cinque colori previsti.
                                              Se la riga è vuota è per intero vuota si ferma perchè la scansione avviene a partire dalla cella A1 ed è definita dalla sua CurrentRegion:

                                              For i = 2 To Range("A1").CurrentRegion.Rows.Count

                                              Si può ovviamente forzare la lettura di una tabella più grande, per esempio con

                                              For i = 2 To 3000

                                              e allora non si ferma prima della riga 3000... questo però era alla tua portata 🙂

                                              #37569 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                Dodi ha scritto:

                                                le informazioni della terza e quarta riga le ho ottenute facendo una tabulazione, 

                                                Se i prezziari hanno la stessa struttura, con qualche riga di codice (!) puoi leggere eriga per riga e spezzarla alle parole chiave che puoi trovarci dentro:
                                                -UNITA' DI MISURA
                                                - IMPORTO EURO
                                                - % MANODOPERA

                                                Chiaramente, se tali parole ci sono sempre e se sono sempre scritte così, altrimenti diventa una ricerca infruttuosa e ti trovi con righe comunque accorpate.

                                                #37570 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  272 pts

                                                  vecchio frac ha scritto:

                                                  Si può ovviamente forzare la lettura di una tabella più grande, per esempio con

                                                  Puoi anche utilizzare il vecchio ma sicuro metodo della nonna 🙂

                                                  For i = 2 To cells(Rows.Count,1).End(xlUp).Row

                                                  che restituisce l'ultima riga compilata in colonna A.

                                                  #37571 Score: 0 | Risposta

                                                  Dodi
                                                  Partecipante
                                                    2 pts

                                                    si la soluzione della nonna mi piace di più, 

                                                    mentre per quanto riguarda spezzare alla parola chiave mi farebbe comodo, 

                                                    non faccio 3 passaggi e cioè cercarlo prima con il SE poi copiarlo su un altra colonna affianco e fare la tabulazione per poi tornare indietro e inserire righe con le scritte incolonnare in modo giusto, per poi evidenziare con i colori

                                                    sempre se puoi a questo punto fammi una macro che mi spezza alla parola chiave e mi mette il tutto nell'ordine come dal mio file. 

                                                     

                                                     

                                                    #37572 Score: 0 | Risposta

                                                    alfrimpa
                                                    Partecipante
                                                      33 pts

                                                      Magari si può provare con le Power Query

                                                      https://m.youtube.com/watch?v=JKyjewSfNiM

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 44 totali)
                                                    Rispondi a: ELENCO PREZZI da PDF a EXcel
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: