Newsgroup: it.comp.lang.visual-basic
Titolo: Macro Word da VB6 e protezione

Ciao a tutti,
vi chiedo una conferma sul funzionamento della protezione Macro da Word.
Da VB6 esporto un file, e apro Word. Qui c'è una macro che carica i dati e
li posiziona nel documento.
Di default Word non fa lanciare le macro, quindi ci sarebbe la rottura di
impostare ai clienti un livello di protezione Basso.
Ho notato però che se uso l'object di Word da VB6, anche con protezione
"MOLTO ELAVATA", riesco a lanciare la macro semplicemente:
--------------------------------------------------------------------
  Set wApp = CreateObject("Word.Application")
  wApp.Visible = True
  Set wDoc = wApp.Documents.Open(App.Path & "\Template.doc")
 
  wApp.Run MacroName:="MAIN"
  wDoc.SaveAs App.Path & "\TemplatePIENO.doc"
 
  Set wDoc = Nothing
  Set wApp = Nothing
--------------------------------------------------------------------
Ora questo mi rende molto felice, ma volevo avere un riscontro da parte
vostra.
Tnx


Ma visto che apri via OLE l'oggetto WORD perchè la procedura prevista
nella Macro non la realizzi via Automazione... così risolvi tutto...
indipendentemente...
@Alex

 indipendentemente...
Prima facevo una sorta di ShellExecute. L'ole era per ovviare al problema
macro (es. 10pc con 10 utenti ciascuno da impostare il livello macro...)
Perchè se 15 clienti mi chiedono cose diverse, incasinerei il codice di IF
di esportazione. Invece il formato del documento è relativo al documento
stesso non certo al codice VB6. Quindi ad ogni cliente il suo .Doc
personalizzato. Da VB6 esporto solo i dati, poi li posso aprire da Word,
OpenOffice ecc. basta fare il file "template".
Esempio se io esporto dei dati nella prima tabella disponibile in word, se
un cliente vuol mettere una tabella prima, dovrei fare:
If cliente1 then Tab=2 Else Tab=1
ecc.
Al lavoro mi avevano chiesto di fare come dici te, ma avevo già espresso i
miei dubbi qualche post fa.
Considera che le routine di esportazione a quel punto dovranno essere sia
per Word che OpenOffice o di PippoOffice il giorno che qualcuno userà e
vorrà quello.


Forse non mi è chiaro il tutto...!
Tu usi un Template che sia in Word o OpenOffice o altro... ed esporti
il tutto nel Template, quindi attivi la macro.
Bene ma in ogni caso non devi differenziare l'esportazione e
quant'altro in base al SW di destinazione...??
Con OpenOffice hai il problema delle Macro...? come fai ad usare OLE
con OO...?(questa domanda nasce dalla mia ignoranza di OpenOffice...)
Ciao
@Alex

 con OO...?(questa domanda nasce dalla mia ignoranza di OpenOffice...)
In pratica tipo Word. Il linguaggio poi è sempre Basic, questo è il testo
preso da un progetto prova in vb6:
'Instanciate OOo : this line is mandatory with VB for OOo API
  Set OpenOffice = CreateObject("com.sun.star.ServiceManager")
'Create the first and most important service
  Set oDesk = OpenOffice.CreateInstance("com.sun.star.frame.Desktop")
'Create a new doc
  Set oDoc = oDesk.loadComponentFromURL("private:factory/swriter",
"_blank", 0, arg())
   Set oDocCtrl = oDoc.getCurrentController()
   Set oDocFrame = oDocCtrl.getFrame()
   Set oDocWindow = oDocFrame.getContainerWindow()
  Set oText = oDoc.GetText
  Set oCursor = oText.createTextCursor
  oText.insertString oCursor, "Prima riga" & vbLf, False 

"Andrea [Work]" <nos...@invalid.invalid> ha scritto nel messaggio
news:yp67vrnus7on$.9prvou9vbno6.dlg@40tude.net...

Il concetto mi sembra chiaro... solo non ho mai valutato positivamente usare
dei Template
con dentro del codice(ma è una mia scelta).
Ho sempre preferito costruire un componente dedicato che si occupasse di
queste cose
per questo non capivo.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 per questo non capivo.
Pensa ad un modulo di offerta ai clienti.
Potresti fare una stampa, ma se lo esporti su word il cliente ha la massima
possibilità di modifica su quel singolo documento.
Inoltre poi tale documento lo "allego" alle offerte o anche al cliente, in
modo rimanga disponibile.


Si mi è chiarissimo il motivo che ti ha fatto prendere questa strada.
La mia scelta deriva dal fatto che non ho SW estranei, quindi gestisco
tutto o con Word o con Excel ma da VB.
In pratica il DOT(o XLT) li uso anch'io ma all'interno non hanno
codice, solo la formattazione dei BookMark, quindi via Automazione
scrivo quelli per compilare il foglio...!
In pratica io costruisco il Template con i BookMark(nomi dei Campi)
quindi li compilo da codice, se l'Utente vuole modificare il Template
non serve riscrivere nulla... se il Campo del Recordset è presente
come BookMark viene compilato altrimenti no...!
In questo modo l'utente un pò sveglio può avere autonomia, quello meno
sveglio.. mi deve far fare il Template... cosa che non mi garba
molto...!
Ciao
@Alex

 molto...!
Che per me è il 98% dei casi :)