Newsgroup: it.comp.appl.access
Titolo: Apertura file

Salve a tutto il ng,
volevo chiedere, vista la mia inesperienza con VBA, quale codice è
necessario scrivere a fronte dell'evento su clic di un pulsante di comando
per aprire un file di word. In particolare si tratta di un modello di
documento (.dot)...ed è possibile fare in modo che appaia nel file un dato
contenuto nella maschera o devo ricorrere alla stampa unione?
So che la cosa è banale...ma c'è qualcuno che mi dà una mano??
Ciao e grazie fin da ora...
Luigi

 ha scritto nel messaggio
news:AvyB8.17210$US3.4...@twister1.libero.it...

Ciao,
la routine dovrebbe essere più o meno così:
(Ricordati di spuntare Word nei riferimenti di VBA)
Private Sub cmdApriWord_Click
Dim appWord As Word.Application
    FileCopy "C:\CartellaModelli\Modello.dot", _
        "C:\CartellaLettere\" & Me.txtProtocollo & ".doc"
            'copio il modello dalla cartella dei
            'modelli in quella delle lettere
            'assegnandogli come nome il protocollo
    Set appWord = CreateObject("Word.Application")
    With appWord
        .Documents.Open "C:\CartellaLettere\" _
            & Me.txtProtocollo & ".doc"
                'creo una istanza di Word e vi apro il
                'nuovo documento appena copiato
        .Documents(1).Bookmarks("DataLettera").Select
        .Selection.TypeText Text:=Me.txtData
            'nel modello avevo inserito un segnalibro
            'chiamato DataLettera: lo trovo e vi
            'scrivo la data che risulta sulla mia maschera
        .Documents(1).Bookmarks("Protocollo").Select
        .Selection.TypeText Text:=Me.txtProtocollo
            'stessa cosa per il protocollo
        .Visible = True
            'rendo visibile il documento
    End With
End Sub
... spero di non aver messo troppi errori
A questo punto l'operatore dovrebbe poter completare la lettera
accertandosi, quando chiude il documento, di rispondere sì alla richiesta di
salvare. Io userei il protocollo come nome del documento Word così si potrà
gestire da Access anche tutta la corrispondenza creata (ricerca per
data/argomento/destinatario) e sempre da Access (modificando la routine di
cui sopra) visualizzare le varie lettere.
Fammi sapere come va...
Ciao
--
Alberto

 Alberto
Ho fatto come indicao nella routine, cioè creato le cartelle, messo i
segnalibri nel modello e poi ho modificato, sempre andando a tentativi e
sbirciando di qua e di là in altre funzioni perchè non conosco una virgola
di VBA, la tua routine in questo modo.
Private Sub Comando16_Click()
 Dim oApp As Object
     FileCopy "C:\CartellaModelli\Modello.dot", "C:\CartellaLettere\ &
Me.txtProtocollo & .doc"
            'copio il modello dalla cartella dei
            'modelli in quella delle lettere
            'assegnandogli come nome il protocollo
    Set appWord = CreateObject("Word.Application")
    With appWord
        .Documents.Open "C:\CartellaLettere\ & Me.txtProtocollo & .doc"
                'creo una istanza di Word e vi apro il
                'nuovo documento appena copiato
        .Documents(1).Bookmarks("DataLettera").Select
        .Selection.Typetext Text:=Me.txtData
            'nel modello avevo inserito un segnalibro
            'chiamato DataLettera: lo trovo e vi
            'scrivo la data che risulta sulla mia maschera
        .Documents(1).Bookmarks("Protocollo").Select
        .Selection.Typetext Text:=Me.txtProtocollo
            'stessa cosa per il protocollo
        .Visible = True
            'rendo visibile il documento
    End With
End Sub
Word parte perchè se faccio ctrl+alt+canc lo ritrovo nei programmi aperti,
ma al momento di mostrarmi il file mi da la finestra di errore con il debug
dicendo "tipo non corrispondente" in prossimità delle linee:
 .Selection.Typetext Text:=Me.txtData
e
  .Selection.Typetext Text:=Me.txtProtocollo
 e qui non sono riuscito a trovare la soluzione...
Ti ringrazio infinitamente per la cortesia e la gentilezza che mi stai
usando...
Ciao,
Luigi

 Luigi
Ho appena fatto una prova
Premesse:
Ho creato la cartella C:\CartellaModelli con dentro il file Modello.dot che
contiene i due segnalibri (Protocollo e DataLettera)
Ho creato la cartella C:\CartellaLettere, vuota
Ho creato un database nuovo, con una sola maschera, con due caselle di testo
(txtData e txtProtocollo) e un pulsante (Comando16)
A fronte dell'evento su click del pulsante ho scritto il seguente codice
(attenzione che ci sono alcune differenze rispetto al tuo - eventualmente
fai un copia/incolla)
Private Sub Comando16_Click()
Dim appWord As Word.Application
    FileCopy "C:\CartellaModelli\Modello.dot", _
        "C:\CartellaLettere\" & Me.txtProtocollo & ".doc"
    Set appWord = CreateObject("Word.Application")
    With appWord
        .Documents.Open "C:\CartellaLettere\" & _
            Me.txtProtocollo & ".doc"
        .Documents(1).Bookmarks("DataLettera").Select
        .Selection.Typetext Text:=Me.txtData
        .Documents(1).Bookmarks("Protocollo").Select
        .Selection.Typetext Text:=Me.txtProtocollo
        .Visible = True
    End With
End Sub
Prima di uscire dall'editor di Visual Basic, da Strumenti->Riferimenti, ho
messo il segno di spunta accanto al riferimento 'Microsoft Word...'
Ho aperto la maschera in visualizzazione maschera, ho scritto qualcosa nelle
due caselle di testo, ho cliccato sul pulsante e mi ha funzionato tutto come
voluto.
Prova in questo modo, fammi sapere.
Ciao
--
Alberto

[CUT]

Ti faranno santo per la pazienza e la bravura che hai nell'usare questi
cavoli di programmi.
Ora funziona tutto bene e alla perfezione anche a me, volevo solo chiederti
due ultime cose e poi prometto che ti lascio in pace.
All'inizio avevo scelto il formato dei numeri di protocollo in questo modo
2002/001 ma lo slash mi da problemi al salvataggio del file perchè non è
permesso usare questo carattere nei nomi dei file, tu come hai risolto?? Io
per il momento l'ho sostituito con 2002-001 ma non è che mi piaccia tanto!
Altra cosa, ho creato una maschera di "riepilogo" in cui sono contenute
tutte le lettere con i numeri di protocollo, destinatario, data...
all'evento doppio clic del numero di protocollo ho associato questo
Private Sub Protocollo_DblClick(Cancel As Integer)
Dim appWord As Word.Application
    Set appWord = CreateObject("Word.Application")
    With appWord
        .Documents.Open "C:\CartellaLettere\" & Me.Protocollo & " .doc"
        .Visible = True
    End With
End Sub
che  dovrebbe permettermi di aprire il file associato ma non succede
assolutamente nulla! Come mai???
Ti saluto e ti ringrazio ancora infinitamente, davvero sei stato
gentilissimo,
ciao,
Luigi

 Luigi
Ciao
--
Alberto

> [CUT]
Ciao Alberto,
anche questi problemi sono risolti, per aprire i file dall'elenco ho
incollato questo:
Private Sub Protocollo_DblClick(Cancel As Integer)
Dim appWord As Word.Application
       MsgBox Me.Protocollo
        Set appWord = CreateObject("Word.Application")
    With appWord
    .Documents.Open "C:\CartellaLettere\" & Replace(Me.Protocollo, "/", "-")
& ".doc"
    .Visible = True
    End With
End Sub
ma vista la mia pignoleria non mi sono accontentato e volevo andare
oltre...ma non ci sono riuscito!
La cosa banale, ma utile, che volevo fare era quella di mettere nel msgbox
in cui appare il file da aprire i tasti si e no in modo da dare la
possibilità di annullare l'apertura per scegliere magari un altro file! Ho
provato a cambiare un pò il codice, ma una volta un problema e una volta un
altro ho rinunciato...
Come posso risolvere??
Ciao e ancora 10.000 grazie per il tuo indispensabile aiuto!
Ciao,
Luigi

 Luigi
Beh, intanto mi pare che sta venendo fuori qualcosa di funzionale e questa è
una bella cosa.
Veramente il msgbox ti avevo suggerito di metterlo solo per controllo nel
caso il codice continuasse a non funzionare... e invece tu hai già trovato
il modo per metterlo a frutto (complimenti!)
Allora, al posto di
    MsgBox Me.Protocollo
Scrivi
    If MsgBox("Apertura del documento " & _
        Me.Protocollo & vbCrLf & "Confermi?", _
        vbYesNo) = vbNo Then
            Exit Sub
    End If
Dovrebbe andare...
Ciao
--
Alberto

 ha scritto nel messaggio
news:abhdgd$ib47a$2...@ID-134626.news.dfncis.de...

E anche questa volta è andata! Si, è proprio come dici tu, è venuto fuori un
lavoretto niente male, non credevo si potesse fare niente di simile e
pensare che per mesi mi sono scervellato alla ricerca di programmi su
internet che facessero questo!
Man mano che userò il programma vedrò se ci sono cose da migliorare,
cambiare o eliminare, caso mai ti faccio sapere e mi aiuti, ok??? ;-)))
Bhè, allora per l'ennesima volta grazie mille e ciao!
Luigi

 Luigi
Ciao
--
Alberto