› Sviluppare funzionalita su Microsoft Office con VBA › Trasformazione casella di testo in cella/tabella excel
-
AutoreArticoli
-
Ciao a tutti,
ho bisogno di una mano su questo file e sto cercando di mettere mano alle cose che non vanno.
In questo file c'è un foglio "Output" che serve a dare una sorta di anteprima di ciò che è scritto all'interno del foglio input ed aggiunge una casella di testo con una serie di informazioni e che utilizziamo anche per aggiungere delle informazioni all'occorrenza.
Sto cercando di pensare ad una soluzione valida che elimini quella casella di testo e renderla una cella/tabella gestibile tramite macro ed automatismi vari (come ad esempio aggiungere informazioni a quelle standard quando necessario senza fare un copia incolla manuale. Chiaramente con la casella di testo non è possibile ma forse con una cella/tabella si. Secondo voi quale soluzione potrebbe portare a questo risultato?
Allego file di prova, e qualche foto per farvi capire cosa aggiungiamo ad esempio al testo quando serve. proprio in merito alla nota aggiuntiva in foto rendendo la casella di testo una cella/tabella potrei aggiungere quella nota in automatico all'occorrenza. Attendo vostri consigli
Grazie mille a tutti
Allegati:
You must be logged in to view attached files.Come mai utilizzi una Casella di testo e non scrivi direttamente nelle celle del Foglio? Mi sembra più comodo appoggiarsi alle celle.
Diciamo che il file non l'ho creato io, io sto cercando di automatizzarlo e migliorarlo. Il problema è che nella stampa in pdf quella casella di testo si va ad adattare in automatico rispetto ad aggiunte o altro, ma succede che venga tagliato il testo in alcuni casi. Secondo te la soluzione migliore sarebbe la cella (questa non mi da però la possibilità di fare elenchi puntati, etc come la casella di testo)? una tabella? un'interazione con access (possibile?)?
Sto cercando di capire quale sia la soluzione migliore
ad esempio in questa prova ho sostituito la casella di testo con una tabella, ma come vedi dal pdf generato mi taglia il testo in basso e non capisco come aggiustarlo per bene
Allegati:
You must be logged in to view attached files.Ma i dati variabili sono solo quelli in colonna C (dove vedo formule) o a seguito di quanto impostato sul foglio Input deve variare anche il testo delle caselle di testo sul foglio Output?
In altri termini quanto scritto nelle textbox di Output è fisso o variabile?
dati variabili solo nella parte superiore (allegato a)
dati fissi nella textbox, potrebbe pero capitare di dover inserire un testo aggiuntivo prima dei dati fissi contenuti nella textbox tipo:
Circa la Sua richiesta, La informiamo che non effettuiamo specificamente cucina senza glutine con menù completo dedicato. Prevediamo – senza alcun sovraprezzo – la preparazione sia a pranzo che a cena di un primo piatto costituito da pasta senza glutine (servito direttamente al tavolo); prevediamo inoltre tra le altre pietanze (secondi e contorni) presenti sul buffet diversi piatti che non contengono glutine (al riguardo, il nostro personale di sala sarà a disposizione per indicare di volta in volta quelle prive di glutine). Non prevediamo alimenti/bevande specifiche a colazione. Merendine, pane, brioches ed altri alimenti che non necessitano di cottura possono essere procurati e consumati ai pasti ma a cura degli ospiti; in tal senso gli ospiti celiaci sono gli unici autorizzati ad introdurre in sala (sia a colazione, che a pranzo e cena) alimenti provenienti dall’esterno. Eventuali richieste e/o variazioni specifiche (sia a colazione, che a pranzo e cena) sono da considerarsi extra con listino “à la carte”.
adesso ad esempio facciamo cosi: allegato b (praticamente andiamo ad aggiungere del testo nella textbox - prima dei dati fissi)
il problema fondamentale è che nella stampa pdf alcune scritte della textbox vengono tagliate ed è brutto a livello estetico. Poi risolto il problema si potrebbe pensare di aggiungere un tasto che aggiunge il testo che serve in automatico (ad es. se ho un cliente celiaco e voglio aggiungere la nota premo il tasto e me l'aggiunge nell'output)
Sto provando e riprovando in tutti i modi ad aggiustarlo ma non riesco a trovare una soluzione valida che mantenga la situazione attuale a livello di informazione e formattazione migliorando estetica ed operatività.
Ogni consiglio è ben accetto per lavorarci su
Grazie a tutti
Allegati:
You must be logged in to view attached files.Ho provato a salvare in PDF il foglio Output (che allego).
A me non sembra di rilevare problemi; se ci sono puoi indicarli magari a me sfuggono?
Puoi postare tu un PDF con i problemi che lamenti?
Allegati:
You must be logged in to view attached files.certo, ti spiego cosa succede, questo problema estetico nella stampa scaturisce sicuramente dall'intestazione e dal piè di pagina (guarda lì) e dipende da quanto è lunga la parte superiore dei dati variabili e se si inseriscono dati aggiuntivi nella textbox tipo la nota della celiachia.
Ti faccio un esempio se faccio un preventivo 2 adulti sarà più corto di un preventivo 2 adulti 1 bambino e 1 ragazzo, La visualizzazione del pdf cambia quando io cambio i dati perchè la textbox si adatta male.
Ad esempio nel tuo file non ci sono grossi problemi di visualizzazione anche se uno c'è e ti allego (allegato a).
Poi ti allego un preventivo fatto da me più lungo come dati variabili inseriti e con la nota celiachia nella textbox vedrai che in intestazione e pie di pagina ci sono varie sbavature del testo e ti posso assicurare con i migliaia di preventivi che facciamo che capita anche che tagli il testo.
Appunto io volevo trovare una soluzione che risolva questo problema, che mi mantenga i dati fissi che sono nella textbox e non faccia sbavature se aggiungo altri dati sopra di essa o nella parte variabile del preventivo.
Esempio: Pensando ad una parte variabile che si allunga o accorcia in base alle informazioni, ed una base fissa che può scendere se si allunga la parte superiore ma che non vada in conflitto con intestazione e pie di pagina. Pensavo anche ad una parte intermedia dove inserire informazioni aggiuntive tramite macro (ad es. la nota celiachia che si usa solo quando ci chiedono cucina celiaca)
Spero di essere stato chiaro e se vuoi provare ho visto che hai fatto una stampa diretta del pdf, mentre la macro save_as nel file applica un filtro delle celle vuote dell'output e le toglie dalla stampa.
Grazie dell'aiuto e spero di riuscire a risolvere.
Allegati:
You must be logged in to view attached files.Dunque...ora non posso dedicarci altro tempo che vado a lavoro...ma un qualcosa del genere non potrebbe andar bene? Tanto per iniziare...poi si può affinare ovviamente.
Ti ho spostato tutta la parte scritta direttamente sul foglio. Ho dovuto aggiungere una colonna A:A per ospitare l'elenco puntato. Ho aggiustato i riferimenti nella macro che lancia la stampa dato che ho aggiunto una colonna.
Ora se vedi le righe 72 e 73 sono dedicate all'inserimento di NOTE AL CLIENTE. Nel rigo 73 aggiungi delle note se necessarie. Se serve spazio allora allarghi il rigo quanto serve. Prova a vedere se una soluzione del genere potrebbe andar bene almeno come pensiero...ahhh...dimenticavo...dovresti inserire il logo in alto nell'intestazione pagina. Non so come mai ma involontariamente l'ho cancellato.
Allegati:
You must be logged in to view attached files.tutte le soluzioni sono ben accette l'importante è mantenere l'identità del file e la sua funzionalità.
Nel file che mi hai allegato, sembra sistemato tutto per bene poi chiaramente va guardato per bene se tutto è ok. Il problema sta nella stampa pdf, non so se tu hai provato, ma fai conto che c'è una macro chiamata save_as che tecnicamente fa questo:
1. crea un file identico all'originale in xlsx e xlsm
2. applica filtri sulle colonne del foglio output per eliminare le celle vuote
3 stampa un file in pdf della pagina output
Ecco se tu lanci questa macro ti renderai conto che il preventivo viene tagliato a metà, ed il problema è proprio qui quando si inizia a spostare qualcosa poi salta tutto il reparto stampa. Per questo sto chiedendo aiuto ci avrò smanettato 1000 volte ma ogni volta che vado a modificare qualcosa poi la stampa viene peggio di prima e quindi si rimane sul file che si ha con la textbox perchè alla fine funziona ha solo quelle sbavature.
Quello che hai fatto è perfetto, molto ordinato e carino, bisogna capire come far funzionare il file e fargli fare tutto quello che faceva prima. Preventivi corretti, filtri sulle celle vuote e creazione del preventivo in pdf esteticamente corretto.
Ti riallego il file perchè ho fatto qualche modifica ai bordi delle celle, ma se vuoi puoi lavorare anche sul tuo. Ti allego anche un file PDF creato con la macro save_as cosi vedi dove taglia. Ti ringrazio per l'aiuto e non ho fretta anzi se risolvo questo problema sono molto contento quindi se ci vorrà del tempo pazienza.
Allegati:
You must be logged in to view attached files.in merito alla stampa ti dico anche se salvi la pagina output in pdf è diverso da stamparla tramite macro per due motivi:
1. non vengono azionati i filtri delle celle vuote (in effetti il preventivo viene stampato bene)
2. se stampi da macro ti taglia la pagina a metà come da file allegato
Ciao @frost220684,
dunque ti giro questa mia proposta. Ti dico subito che bisogna rivedere ciò che è scritto nell'elenco puntato perché ho dovuto fare una serie di copia e incolla oltre a riportare a mano alcune frasi...quindi è necessario capire se ho riscritto tutto correttamente...ma per ora concentriamoci sulla struttura.
Innanzitutto ho eliminato la Casella di Testo (secondo me appesantisce di molto il file). Ho riportato tutto il contenuto direttamente nelle celle del Foglio.
Ho fatto vari tentativi ma l'unico che funziona è quello di scrivere rigo per rigo. Mi spiego meglio:
tu vorresti far fare a Excel ciò che gli riesce meglio a Word. Ora per rispettare i margini del foglio di Excel, l'intestazione e piè di pagina e quant'altro, è necessario scrivere rigo per rigo.
Quindi ho creato tante piccole righe (Celle Unificate da B:D [esempio:B30:D30; B31:D31; B32:D32; ecc...]), quindi in ogni rigo ho scritto quello che c'era nella Casella di Testo.
Poi ho gestito l'area di stampa con il metodo PageSetup.
Se noti bene nella cella A72 puoi inserire le NOTE AL CLIENTE. E' una cella unica con una certa altezza, diversa dalle altre insomma, che si può variare a piacere. La variazione della sua altezza non influenzerà la stampa.
Ora dobbiamo capire come gestire questa cella...nel senso come ti piacerebbe interagire con essa.
Ti ricordo che devi aggiungere il logo nell'intestazione di pagina perché per errore l'ho cancellato.
L'unico inconveniente che hai è che non puoi GIUSTIFICARE il testo, cioè non puoi allineare il testo a destra. Credo che con Excel non riesci. L'unica scelta che hai sarebbe quella di divedere il testo in sillabe quando sei a margine del rigo. Questo vorrebbe dire di rivedere completamente ogni rigo dell'elenco puntato...però se vuoi che ci sia un certo allineamento anche a destra, credo che perdere una mezz'ora, ne valga la pena.
Cmq adesso se hai necessità di aggiungere/eliminare/modificare le note dell'elenco puntato ti basta inserire righe o eliminarle.
Fammi sapere....tieni presente che ci ho perso gli occhi per creare questa struttura...è vero che non è nulla di ché ma ci è voluto del tempo.
Allegati:
You must be logged in to view attached files.Ciao Alex,
Innanzitutto grazie so cosa vuol dire smontare quella tabella, l'ho fatto parecchie volte cercando una soluzione e senza risultati accettabili.
Torniamo al tuo file, si purtroppo la casella di testo fa cose che excel non permette, ma secondo me la tua soluzione è molto funzionale. Devo solo provarla 1000 volte per vedere se funziona tutto correttamente e dove potrò portare modifiche lo farò direttamente io. Appena ho una visione totale ti do un feedback e grazie sei riuscito a fare sicuramente molto più di me.
A presto ti aggiorno
Ciao Alex,
ci ho messo un po semplicemente perchè la stiamo testando e ritestando per vedere i suoi comportamenti anche in funzione delle macro. Ti dico la soluzione è molto valida, l'ho modificata un po e per questo ti mando un file aggiornato. In più ti segnalo alcune cose che non sono riuscito a capire a cosa sono dovute:
1. Nel passaggio tra pagine capita che tagli il testo o piccole parti di esso (allegato a), che in funzione di quante righe poi si allunga il preventivo può essere piu o meno accentuato (es. se metto nel preventivo più supplementi il preventivo si allunga in base a quello e la stampa pdf cambia in base a quello, per capirlo bene serve stampare tramite macro + preventivi con diverse modalità)
2. ho cercato di formattare il testo per giustificarlo creando un nuovo foglio Output, mentre la tua struttura l'ho messo in un foglio a parte "Vecchio".
3. Come vedrai dai preventivi 3 e 4 che allego e sono consecutivi mentre nel 3 all'altezza della tipologia camera (allegato b) i bordi celle si vedono in modo corretto nel preventivo 4 esce fuori un bordo che non capisco da dove esca fuori
Se riusciamo a sistemare queste cose sempre essere tutto ok. Ad ogni modo continuo a provare e ti aggiorno man mano. Grazie mille dell'aiuto.
Allegati:
You must be logged in to view attached files.inserisco nuovo commento per allegare altri 2 file preventivo
Allegati:
You must be logged in to view attached files.1. Nel passaggio tra pagine capita che tagli il testo o piccole parti di esso (allegato a), che in funzione di quante righe poi si allunga il preventivo può essere piu o meno accentuato (es. se metto nel preventivo più supplementi il preventivo si allunga in base a quello e la stampa pdf cambia in base a quello, per capirlo bene serve stampare tramite macro + preventivi con diverse modalità)
Ciao, è ovvio che sia così. Tu hai modificato la struttura del mio esempio. Come ti avevo scritto non puoi far fare ad Excel quello che dovrebbe fare Word.
Nel mio esempio, ti avevo indicato che bisognava scrivere rigo per rigo. Invece tu hai unito le celle in tanti riquadri quanti sono i punti dell'elenco (ci avevo provato anche io ma con scarsi risultati, per questo ho virato su rigo per rigo). Se vedi il foglio "VECCHIO" in ogni rigo c'è parte dell'elenco puntato. Se lasci invece come hai fatto tu, capita proprio il problema che hai evidenziato. Se vuoi che tutto funzioni deve fare come ti avevo suggerito. Prova il mio esempio e vedrai che non capiterà questo inconveniente.
2. ho cercato di formattare il testo per giustificarlo creando un nuovo foglio Output
Ehhh....anche io ho provato a formattare il testo per giustificarlo e l'unico modo è proprio quello di crearlo in celle unificate. Ma come dicevo è necessario scrivere rigo per rigo, ma dovrai rinunciare a formattare in testo in modo giustificato (spero che qualcuno mi smentisca). L'unica soluzione che ho trovato è quella di dividere il testo in sillabe a margine del rigo (Es.: I prezzi sono da.........ospite di età compre-sa). Cioè se la parola compresa non entra nel rigo allora fai arrivare compre- in quel rigo mentre sa nel rigo sotto. Ovviamente già so che ci perderai gli occhi a dividere in sillabe...però una volta fatto te lo ritrovi.
3. Come vedrai dai preventivi 3 e 4 che allego e sono consecutivi mentre nel 3 all'altezza della tipologia camera (allegato b) i bordi celle si vedono in modo corretto nel preventivo 4 esce fuori un bordo che non capisco da dove esca fuori
Dunque, sembra che sia un effetto del filtro che viene applicato nella colonna D per non visualizzare le righe vuote. Ho fatto una prova e sembra funzionare...fai come ti indico e vedi se si risolve. Seleziona dalla cella A23 fino alla D23, fai click destro del mouse, FORMATO CELLE, BORDO, anche se già vedi il bordo superiore...toglilo e inseriscilo nuovamente. Poi vedi se adesso funziona.
Ciao Alex,
Eh lo avevo intuito per la giustifica solo che il mio capo è fissato con la giustifica del testone la vuole così. Ma secondo te non ce nessun altro metodo anche al di fuori di excel (es access) più versatile che ci permetta di fare tutto quello che fa questo file e migliorarlo sensibilmente?
Il tuo file l'ho provato e va bene vediamo che cosa si riesce a fare e decidere. Per il bordo ci provo e ti dico.
Grazie
Be' sicuramente con Access potresti ottenere un risultato più professionale. Io a lavoro utilizzo una Rubrica Telefonica creata (in collaborazione con Vecchio Frac) in Access e devo dire che per lo scopo non ha paragoni rispetto ad Excel. Però qui stiamo parlando di rifare completamente il lavoro da capo...non è una passaggiata. Bisogna crare tabelle, maschere, query....e mettere il tutto in relazione.
immaginavo, mi chiedevo se queste problematiche testo secondo te possano essere risolte in modo definitivo e per come vogliamo?
Guarda....spero di non dire stupidaggini, ma mi sembra che anche in Access non puoi "giustificare" il testo né nelle Textbox né nelle Label. Potresti "ripartirlo" ma accadrebbe che se hai poche lettere scritte in una Textbox poi ognuna di essa di allontanerebbe l'una dall'altra per riempire la Texbox stessa. Ad esempio se nella Texbox ho scritto: "Ciao sono Alex" ma la Texbox è lunga, ti potresti trovare con qualcosa del genere: "C i a o s o n o A l e x".
Comunque pare che il problema si possa risolvere facendo ricorso alle API, ma ci addentriamo in un terreno da me sconosciuto.
sinceramente non so nemmeno di che cosa stiamo parlando. Se è una soluzione valida e qualcuno nel forum riuscisse a darci una mano che ben venga, non so se tu conosci qualcuno che possa conoscere una cosa del genere
Ciao Alex,
Sto impazzendo e non riesco ad aggiustarlo in nessun modo. Ho unito un po tutte le modifiche fatte (codice comitive, formattazione etc) per vedere dove si arrivava. Il file funziona correttamente. Solo che se lancio a stampa di un preventivo normale il pdf esce bene se lancio la stampa di un preventivo comitiva mi viene tagliato. sicuramente è una cavolata di impaginazione che non riesco a correggere. ti allego file pdf e file dove lavorare
Grazie dell'aiuto
Allegati:
You must be logged in to view attached files.naturalmente l'errore nasce lanciando le due macro separatamente:
se lanci "save_as" il pdf viene bene (preventivo individuale)
se lanci "save_ascomitive" il pdf viene tagliato (preventivo comitive)
sembra che ho risolto passando da questo codice:
With .Worksheets("Output") ' inserire il nome della cartella preventivi PDF al posto di Preventivi Excel .Columns("A:A").ColumnWidth = 44.57 .Select .Range("$A$5:$C$64").AutoFilter Field:=3, Criteria1:="<>" wb1.Worksheets("Input").Range("N45").Value = p & "\pdf\" & Replace(s, "/", "-") & ".pdf" .ExportAsFixedFormat xlTypePDF, p & "\pdf\" & Replace(s, "/", "-") & ".pdf", from:=1, To:=4 End Witha questo nella parte di stampa pdf:
With wb2.Worksheets("Output") ' inserire il nome della cartella preventivi PDF al posto di Preventivi Excel .Select .Range("$A$5:$D$65").AutoFilter Field:=4, Criteria1:="<>" With .PageSetup .Orientation = xlPortrait .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False End With .ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=p & "\pdf\" & Replace(s, "/", "-") & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False End Withprovo e ti dico. Grazie
Ciao,
scusa ma solo adesso ho potuto leggere le tue richieste di aiuto ma noto con piacere che sei riuscito a risolvere da solo. Comunque ti posso confermare che il problema sta nell'impostare la pagine utilizzando il metodo PageSetup e le sue proprietà. Con le istruzioni:
.Zoom = False .FitToPagesWide = 1 '<---Adatta colonne alla pagine .FitToPagesTall = Falsefai in modo di adattare la larghezza delle colonne alla dimensione della pagina.
-
AutoreArticoli
