› Sviluppare funzionalita su Microsoft Office con VBA › ELENCO PREZZI da PDF a EXcel
-
AutoreArticoli
-
fammi una macro che mi spezza alla parola chiave
Sì lo posso fare ma mi serve un po' di tempo.
Comunque avevo ragione io, analizzando bene il file pdf capisco che si tratta di apprestamenti per la sicurezza, è quindi molto molto simile al prezziario che ho incorporato nei miei modelli di DUVRI... so bene di cosa si tratta e so che è un lavoraccio infame 🙂
Però richiamo l'attenzione sul fatto che la trasposizione da PDF a Excel col copia incolla (ma anche col sistema patel) non funziona bene quando ci sono dei segni = o - nelle righe, che vengono interpretati male da Excel (vedi le righe del file Dodi "OS-2023.xlsx" che contengono FALSO, come da riga 85 in poi) come se fossero formule da calcolare.
Per il resto visto che ho iniziato a lavorarci ti confermo che non è una cosa impossibile da fare essendo la codifica standardizzata (ogni voce inizia con "OS." poi segue la sigla categoria, quindi si possono ricavare le celle iniziali di ogni apprestamento).
Buongiorno, oggi è la festa del Papa', Auguri.
Sto seguendo il the-end
, cosa ho fatto.Dal file Pdf che è stato allegato, l'ho salvato in formato xlm, l'ho importato in Word modificandolo, elimimando la intestazioni che non interessano, l'ho esportato da word in Pdf, da questo Pdf l'ho salvato in xlm. A questo punto l'ho importato in Excel ed è uscito fuori il file che via allego, non so se puo servire.
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Ancora piu compatto.
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Buongiornoo a tutti e auguri a tutti i papà
inizio da Parte,
La soluzione proposta funziona su office 365 e poi per quello che mi serve senza passare dal vba occorre che il file da convertire (pdf) con il query sia già con struttura tabella, cmq ancora grazie per i suggerimenti, magari mi può tornare comodo come modo quando ho un computo già sviluppato in fase di gara,
Poi
Vecchio frac,
In effetti in alcune celle esce l'errore #NOME
Perché trovando il segno meno lo esegue come calcolo,
In effetti la prima cosa che faccio dopo aver copiato tutto da pdf faccio il filtro e controllo che non ci sia nessun errore,
Se trovo errori vado a controllare dove c'è e tolgo il segno = e lo sostituiscono con '
Poi inizio a inserire colonne e faccio la funzione ''SE''
Per gli articoli scrivo =SE(A1=OS.;1;0)
E poi filtrando 1 mi escono fuori tutti gli articoli e li evidenzio, e cosi via,
Poi per l'unità misura
Prezzo un
E % manodopera faccio le tabulazioni copiando e incollando su altri fogli per poi tornare sul primo foglio e incollare il tutto. E avere la struttura come dal secondo file di albatros.
Ovvio che quando faccio i filtri inizio a fare pulizia delle cose che non servono.
Insomma potete capire che bordello mi ritrovo a fare per colpa delle teste dure a non rilasciare file editabili e già strutturati per ussarlo. Va Bhe uno sfogo penso che me lo consentite.
Poi Albatros che ti saluto e ben entrato nella discussione,
Il tuo secondo file sembra ok per come e' strutturato, tornerebbe comodo per poi applicare i colori e usare il codice di vecchio frac per incolonnarlo a modo di elenco prezzi,
Art..
Descr.
U. M
P. U
% manod.
Ma sicuramente avrai perso tanto tempo per ottenere quel risultato, io per ottenere una cosa simile ci metto un oretta e passa. fai lo stesso lavoro che faccio io su excel, pulendo tutto quello che non serve. Ma provo anche io a vedere i tuoi passaggi
Sempre per Albatros
Su word devi scorrere tutte le righe e vedere cosa serve o non serve e cancellare, excel a mio avviso in qsta caso aiuta di più perché puoi fare i filtri e allo stesso tempo puoi decidere se cancellare o evidenziare, insomma con un passaggio risulvi più problemi contemporaneamente.
Ma non posso dire che il tuo risultato non sia buono o non si avvicina alla prima fase, per poi intabellare il tutto con il codice di vecchio frac
Sempre per Albatros
Se il metodo di Albatros non è esageratamente complesso da attuare, si può dire che questa è la base di partenza perfetta.
Altrimenti rimango con il mio pensiero e cioè dammi pazienza un attimo e produco il codice che legge la base dati grezza (cioè senza alcun intervento) e produce, in teoria (risultato da ottenere), il primo passaggio come quello di Albatros e poi, secondo passaggio, il risultato finale dopo aver applicato la macro sui colori.
oggi è la festa del Papa', Auguri.
A tutti i papà 😀
questo risultato io lo ottengo con solo un passaggio, e ci metto davvero 1 minuto,
apro il PDF
seleziono i dati,
e li copio nella cella A1, facendo attenzione a copiarlo come testo,
il risultato di partenza e questo,
poi applico filtri ecc... ecc.....
se avevo il problema di solo 2 oppure 3 elenchi prezzi non avrei aperto la discussione,
quindi Vecchio frac tranquillo prenditi il tempo che vuoi,
ma oggi goditi la famiglia,
non pensare al mio problema,
c'è tempo,
un saluto a tutti e rinnovo gli auguri a noi papa'
Allegati:
You must be logged in to view attached files.seleziono i dati, e li copio nella cella A1
Non ho capito come ci riesci. Io ho provato, apro il pdf, seleziono tutto, copio e incollo in Excel, ma non ottengo la copia di tutti i dati e comunque non come il tuo risultato. Neanche a copiare in Word, perchè se mi va bene copia solo fino al sommario.
Comunque l'ultimo allegato (File 00.xlsx) è perfetto per la procedura che sto scrivendo.
Una cosa che non ti ho chiesto è: vuoi conservare anche la descrizione di cui alla VOCE?
Esempio
VOCE 0101
Costo di utilizzo di recinzione provvisoria realizzata con pannelli di legno, a incollaggio fenolico, sorretti da morali e sottomisure
e comunque rispondente alle indicazioni contenute nel regolamento edilizio comunale, fornita e posta in opera. Sono compresi: i
montanti di sostegno dei pannelli delle dimensioni minime di cm 10 x 10; l'infissione dei montanti nel terreno o incastrati in
adeguata base di appoggio; le tavole sottomisure poste sul basso, in sommità ed al centro del pannello, inchiodate o avvitate al
pannello medesimo e ai montanti di sostegno comprese le saette di controventatura. E' inoltre compreso quanto altro occorre per l'utilizzo temporaneo della recinzione provvisoria.Posso allegare una prima proposta. Non mi sembra che faccia nu brutto lavoro ma qualche cosa da affinare c'è sicuramente.
Per esempio la voce OS.AP.A.0109.B nel file ultimo allegato soffre del copincollaggio della struttura della pagina/tabella del pdf, perciò (vedi le righe 89-97) la mia macro si inganna e considera come facente parte della descrizione della voce in questione tutte le righe da 91 a 95 (perchè il codice fa una scansione brutale delle righe finchè non trova UNITA' DI MISURA).
A parte qualche piccolo inconveniente non mi pare un brutto risultato. Certo bisogna passare un po' di tempo a scorrere il foglio Listino per depurarlo degli errori (righe in più aggiunte dove non ci vanno).
La macro fa anche a meno dei colori e produce un Listino già a partire dai dati grezzi (nel file di prova, che allego, ho riportato in foglio1 tutto il "file 00" di prova che hai allegato poco sopra).Allego il file.
Allegati:
You must be logged in to view attached files.Allora, mi vergogno,pero con due righe credo di poter raggiungere il "Target".
In allegato il file, si riferisce al file che ho postato nel #37578, dove ho inserito , nel foglio1 queste righe,(che sono da implementare)
Option Explicit Sub m() Dim lastrow As Integer, a As Integer, b As Integer Dim separa As Variant lastrow = Cells(Rows.Count, 1).End(xlUp).Row b = 1 For a = 1 To lastrow If Left(Cells(a, 1).Text, 1) = "O" Then Worksheets("Listino").Cells(b, 1) = Cells(a, 1).Text Worksheets("Listino").Cells(b, 2) = Cells(a, 1).Offset(1) separa = Split(Worksheets("Foglio1").Cells(a, 1).Offset(2), ":") Worksheets("Listino").Cells(b, 3) = separa(1) Worksheets("Listino").Cells(b, 4) = Cells(a, 1).Offset(4) Worksheets("Listino").Cells(b, 5) = Cells(a, 1).Offset(6) b = b + 1 End If Next End Suballego file
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Ho provato la tua soluzione al volo,
lunedì provo a capire il codice e cerco di analizzare il lavoro che fa,
cmq in rima battuta sembra che fa un buon lavoro,
dovrò fare un po di lavoro di pulizia delle voci nella tariffa,
eliminando il numero pagina, le intestazioni e le voci, dico questo perche se provi il file che hai allegato vedi nel foglio listino alla riga 5, nella descrizione copia il numero del foglio,
cmq siamo a un ottimo punto.
penso che previo controlli che farò in modo puntuale e farò delle prove concrete, mi sembra che hai fatto un grandissimo lavoro,
poi mentre per risponderti come faccio ad ottenere il mio file,
spero di spiegartelo bene,
apro il PDF seleziono tutto, faccio copia,
poi apro excell
,i posiziono nella cella A1, e faccio copia speciale,
si apre una maschera e fleggo sull'opzione testo, e il gioco e fatto,
prova e fammi sapere se ottini il mio stesso risultato, facendo così evito di fare tutti i passaggi che ha proposto Albatros,
cmq per ora goditi la domenica, mi sembra che hai gia fatto un buon lavoro, come detto previo mie verifiche puntuali.
mentre per l'atro quesito la VOCE non mi serve.
ciao Vecchio Frac
con
Const categorie As String = "AP CI IF IM MC MP MS PR"
a cosa si riferiscono "AP CI IF IM ecc.... ecc....
mi serve capirlo perchè poi se tutto funziona devo applicare la soluzione a gli altri listini, che sono simili ma cambia il codice tariffa non sarà più OS. ma avrà un altro inizio tariffa, esempio BA. oppure MO.
e li basta che cambio
l' If s Like "OS." & v & ".*" Then
con
If s Like "BA." & v & ".*" Then
riesco, spero a far funzionare il tutto,
come detto mi serve capire a cosa si riferiscono "AP CI ecc. ecc. nella stringa Const.
potresti spiegarmi per piacere cosa ti riferisci?
è una stringa universale poi per gli altri listini?
intanto grazie di cuore, mi sembra che siamo davvero in linea con quello che mi serve.
grazie vecchio frac.
mentre per Albatros,
proverò a tesare la tua soluzione dopo che ho magari impostato un listino sulla base della mia inziale proposta di soluzione, e cioè quella di ripulire il foglio da dati inutili,
ma la soluzione di Vecchio Frac ,i eviterebbe anche di fare la funzione "SE" e di intabulare l'unità di misura , il prezzo unitario e la % di manodop.
mi sembra sia uno step avanti che mi aggevola molto,
dovrò solo depurare un po i dati esempio numero foglio e N° voce,
ancora grazie intanto.
Const categorie As String = "AP CI IF IM MC MP MS PR"
a cosa si riferiscono "AP CI IF IM ecc.... ecc....
si riferiscono al completamento del tuo codice articolo ti "OS.AP.A.102c" che servono ad individuare il codice
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )mi vergogno,pero con due righe
Ti vergogni di che? Anzi
Ho provato la tua soluzione al volo,
Credo che Dodi si riferisca a me... ma l'ho capito alquanto dopo 🙂
a cosa si riferiscono "AP CI IF IM ecc.... ecc....
Sono le categorie definite nel prezziario naturalmente... le ho ricavate dall'indice:
categoria AP Apprestamenti
categoria CI Costi integrativi della sicurezza
categoria IF Interventi finalizzati
eccetera, come ha intuito Albatros quando dicesi riferiscono al completamento del tuo codice articolo ti "OS.AP.A.102c" che servono ad individuare il codice
è una stringa universale poi per gli altri listini?
No, devi controllare l'indice degli altri listini ovviamente.
dovrò solo depurare un po i dati
certamente, ma lo puoi fare alla fine, chiaro che con due o tremila righe avrai un bel daffare, ma mai come dover fare tutto a mano copia incollando i titoli e inserendo i colori 🙂
Vecchio Frac.
buongiorno,
ho avuto modo di testare la tua soluzione,
ho visto che quando trova l'errore il codice si ferma,
e fin qui tutto ok,
basta fare un controllo dei dati copiati prima di lanciare la macro,
mentre quando trova le voci maggiorazione,
che il valore si esprime in Percentuale, non mi riporta il prezzo unitario,
bisognerebbe inserire un ulteriore variabile,
se vedi il file che ti allego, sul foglio 1 ho evidenziato alcune voci per farti capire,
mentre se vedi il foglio LISTINO ho evidenziato le celle dove mancano informazioni, e cioè la (%) e il prezzo unitario
spero di aver spiegato bene,
puoi dare un occhio per piacere quando hai tempo?
grazie.
Allegati:
You must be logged in to view attached files.ho visto che quando trova l'errore il codice si ferma,
Quale errore? 🙂
quando trova le voci maggiorazione,
che il valore si esprime in Percentuale, non mi riporta il prezzo unitario,
Eh già, io ho previsto di controllare solo le voci UNITA' di MISURA e IMPORTO (in euro) ma non altre voci. Adesso che mi hai fatto vedere che esiste anche PERCENTUALE bisogna discriminare anche questo caso.
Riallego il file rivisto.
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
