Newsgroup: it.comp.lang.visual-basic
Titolo: Codice nell'exe o nella macro?

Salve a tutti,
ho riscritto delle vecchie procedure che esportavano dati su Word.
Il tutto era fatto molto semplicemente:
Da VB6 esporto un file di testo con i dati della tabella
Da Word credo un documento "template" con una macro che apre il file di
testo e scrive i valori sostituendoli ai segnalibri impostati.
Tutti i template gli facciamo noi per i clienti, ed eventualmente li
modifichiamo.
Ora mi č stato chiesto di fare la medesima cosa, ma scrivendo il codice in
VB6, in pratica una CreateObject e il quasi copia/incolla della macro, e
usando un trova sostituisce al posto dei segnalibri (es. nel documento c'č:
Spettabile [NOMEDITTA] [INDIRIZZO] Ecc), quindi senza esportare alcun file,
ma lavorando direttamente su Word/OOo.
Funziona tutto, ma non vedo i vantaggi.
L'unico sarebbe che il cliente si puň impostare il template da solo, ma il
95% a malapena sanno fare copia/incolla...
I problemi sono molti di piů, primo IMHO l'importazione č legata al
documento, non al VB6, quindi a logica la integrerei nel documento.
Inoltre se poi Office 2008 o OOo 3.0 decidono di cambiare "linguaggio", da
VB6 non sarebbe affatto semplice gestire la cosa, chi ha la nuova e vecchia
versione ecc.
Soprattuto poi se uno vuole un campo in un modo o nell'altro, ci sta di
infarcire il codice di migliaia di IF.
Adesso a rifare la macro interna per OOo impiego 20min, rifarlo da VB6
diviene piů complicato, e se uno vuole la suite PippoOffice o PlutoOffice?
Se č nel loro file, il programma esporta sempre tutte le informazioni, poi
Word/OOo ecc. le cercheranno col loro linguaggio.
Mi sapete indicare altri difetti o pregi di lavorare direttamente da VB6 su
Word o OOo?


Dipende sempre dal contesto.
-- 
---------------------------
Mauro Gamberini
http://www.riolab.org/
 

 Dipende sempre dal contesto.
Più o meno ho spiegato in che ambito lo dovrei usare.
Caricare dei dati da una tabella in un modulo pre-costruito in word.
Prima usavamo:
1) Documento Word con Segnalibri e Macro che apre un file di testo con i
dati
2) Procedura VB6 che crea un Componente Word e va a fare TROVA/Sostituisci
nel testo.
La 2) mi sembra palesemente più complicata, pensa ad avere 10 clienti che
chiedono cose che non puoi fare colo Trova/Sostituisci, ti tocca
personalizzare tutte le eportazioni, e di fatto tornando ad una soluzione
simile alla 1) anche se fatta da VB6, incasinando l'exe.
Il vantaggio della 2) è che il cliente si può fare il .DOC da solo.
Ma se sa fare quello probabilmente sa anche inserire dei segnalibri in un
documento. Oppure ci manda il .DOC come lo vuole e glielo sistemiamo (non
si parla di un sw con 10mila installazioni), trall'altro è una funzione
poco usata.
Considerando che il 90% dei clienti non sa che è il desktop e che è il
copia/incolla, dubito possa farlo da solo.
Nella pratica sto parlando dell'esportazione dal gestionale, di un modulo
di offerta in word/OOo.
Quindi Spett.le Cliente ecc., i righi dell'offerta, e la coda con
l'importo.

Io ho risolto come segue (però era solo un elenco di indirizzi da applicare
ad una circolare).
Ho creato nel database una tabella (diciamo Clienti2)
uguale alla tabella Clienti..
Con VB6 ho fatto solo il programma di selezione dei
clienti a cui mandare la circolare (praticamente copiare
dalla tabella completa a quella parziale i records
selezionati).
Tutto il resto con Word.
Non so se nel tuo caso sia percorribile questa soluzione.
Ciao, Sauro.

 Non so se nel tuo caso sia percorribile questa soluzione.
Diciamo che per me è impossibile aprire il DB da Word, perchè possono
essere diversi DB in posizioni diverse, e perchè uso firebird (comunque con
ODBC funzionerebbe).
La comodità è che il cliente, dal gestionale preme un tasto, poi gli si
apre Word/OOo e preme un pulsante a menu: "Importa Dati"
Se si lavora direttamente tramite l'object da VB6 si velocizza un pelo, in
quanto non deve cliccare "Importa Dati".
Comunque per me sempre meglio esportare il file di testo, anche perchè un
giorno potrei rifarlo in vb2005 e dovrei scrivere solo una routine che
salva un record in un file di testo. Anche per il fatto che così è già
fatto e funziona, mentre l'altro metodo è da implementare, e per fare per
bene è necessario trasformare tutti i template dei clienti che ci sono in
giro, per avere almeno uniformità.