Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Una Macro per salvare da WORD Opzioni
g.seveso
Inviato: Wednesday, April 12, 2006 1:24:08 PM

Rank: AiutAmico

Iscritto dal : 10/4/2000
Posts: 43
Salve
ho un vecchio portatile (insicuro per via della pila!) e tempo fa ho scritto una macro che mi permette di salvare frequentemente sul floppy A ciò che sto scrivendo in Word, per sicurezza, cliccando con un solo pulsante e assegnando automaticamente al file salvato il suo nome. Ciò che non riesco a fare è di riaprire automaticamente il documento sul portatile nella sua sottodirectory di partenza per continuare a lavorare. Qualcuno mi può aiutare nello script ?
Ecco il testo della macro:


Sub AutoSalva()
'
' AutoSalva Macro

ChangeFileOpenDirectory "A:\"
myDocname = ActiveDocument.Name
pos = InStr(myDocname, ".")
If pos > 0 Then
myDocname = Left(myDocname, pos - 1)
myDocname = myDocname & ".doc"
ActiveDocument.SaveAs FileName:=myDocname, _
FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False
End If

ActiveDocument.Close

ChangeFileOpenDirectory "C:\DOCUMENTI WORD"


End Sub

Cio' che vorrei è che il ChangeFileOpenDirectory puntasse alla subdirectory di partenza e mi riaprisse automaticamente il file su cui stavo lavorando. Si può fare? Io non ci riesco.
Sponsor
Inviato: Wednesday, April 12, 2006 1:24:08 PM

 
a10n11
Inviato: Wednesday, April 12, 2006 5:46:11 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
una cosa non è chiara. La routine termina con la chiusra del file, se devi continuare a lavorarci pechè lo chiudi e non lo mantieni aperto. Suppongo che oltre alla copia di sicurezza sul Floppy ti inetressi mantenere le modifiche anche sul file originario. La possibile soluzione potrebbe essere quella di effettuare un doppio salvataggio. guarda se queste righe sotto possono fare al caso tuo:

Sub AutoSalva()
miadir="C:\DOCUMENTI WORD"
ActiveDocument.SaveAs FileName:= "A:\" & _
ActiveDocument.Name, AddToRecentFiles:= False

ActiveDocument.SaveAs FileName:=miadir & "\" & _
ActiveDocument.Name, AddToRecentFiles:= False
End sub

in questo modo salvi la copia di sicurezza sul floppy, aggiorni il file originale sull'HD e ripristini i riferimenti originali della directory.
saluti
Andrea


g.seveso
Inviato: Wednesday, April 12, 2006 10:18:46 PM

Rank: AiutAmico

Iscritto dal : 10/4/2000
Posts: 43
Sì, chiudo il file perchè altrimenti - chiusa la macro - continuerei a lavorare sul file salvato nel floppy in A.
Il problema è che non riesco ad attribuire automaticamente un valore al percorso del file, cioè alle subdirectory (ne ho molte) dove catalogo i documenti Word sul PC. In altre parole, quando nella mia Macro torno a:
ChangeFileOpenDirectory "C:\DOCUMENTI WORD"
lo faccio per tornare alla mia cartella principale e poi manualmente riaprire la subdir dove stavo lavorando (o riaprire il file cliccandolo dal menu File Recenti).
Forse dico una eresia, ma non c'è un modo per definire l'intero percorso di un file, tipo: myDocname= <b>percorso</b> + ActiveDocument.Name ?
a10n11
Inviato: Thursday, April 13, 2006 11:39:35 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
per fefinire l'intero percorso del file ci sono varie soluzioni:
la prima è farla leggere direttemente da VBA utilizzando la funzione "CurDir"

MyPath=Curdir 'ti restituisce il percorso completo del file

oppure questo è un altro metodo:

MyPath= "C:\DOCUMENTI WORD\"
subfold="MIEIDOCUMENTI\"
MyDocname=ActiveDocument.Name
X= mypath & subfold &MyDocname

il più semplice è questo:

X= "C:\DOCUMENTI WORD &"\" & "MIEIDOCUMENTI" & "\" & ActiveDocument.Name


saluti
Andrea


g.seveso
Inviato: Thursday, April 13, 2006 12:59:57 PM

Rank: AiutAmico

Iscritto dal : 10/4/2000
Posts: 43
Grazie, sei stato molto gentile. Allora approfitto di aver fatto 30 e facciamo 31 ! Ti chiederei: come uso nella mia macro originale questa funzione MyPath=Curdir che mi sembra proprio interessante e che non conosco?
Cioè: come faccio (una volta salvato il file.doc nel floppy) a tornare automaticamente alla dir di partenza (che può cambiare ad ogni file, non è mai la stessa) dentro la quale stavo lavorando, e riaprire il file originario?
Nelle soluzioni finora prospettate (se ho capito e sperimentato bene) la dir e subdir di partenza è fissata: cioè è quella che scrivo manualmente io nella macro, non è automaticamente riconosciuta e usata dalla macro stessa. Oppure no?
Buona Pasqua e ancora grazie...
g.seveso
Inviato: Thursday, April 13, 2006 1:03:11 PM

Rank: AiutAmico

Iscritto dal : 10/4/2000
Posts: 43
Volevo dirti ancora che non sono proprio un esperto di VBA (si era capito ? ) e vado un po' a tentoni...
Grazie mille ancora !
a10n11
Inviato: Thursday, April 13, 2006 3:10:17 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
c'è una cosa che non ho capito del tuo lavoro.
La copia di salvataggio la effettui solo sul floppy o anche sull'HD?
Siccome dici che dopo aver lanciato la macro chiudi il file e lo riapri dalla directory dell'HD, questo deve o no contenere le modifiche salvate sul floppy.
saluti
Andrea

a10n11
Inviato: Thursday, April 13, 2006 4:30:46 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
ricapitolando il tuo problema, tu vorresti che dopo aver eseguito il salvataggio sul floppy, ti possa rimanere aperto il file su cui stavi lavorando ma indirizzato al percorso sull'HD, svincolandolo dall'associazione al floppy generato dal comando Salva con nome.
Una soluzione che a parole può sembrare complicata ma estremamente fluida e veloce può essere questa: Crei una copia provvisoria del tuo documento che salverai con nome nel floppy, chiuderai l'istanza appena eseguito il salvataggio e ti resterà aperto il tuo file originario puntato al percorso delle tue cartelle e sottocartelle.
prova a far girare questa macro:

Sub copia_salva()
Application.ScreenUpdating = False
savedir = "A:\"
docname = ActiveDocument.Name
Selection.WholeStory
Selection.Copy
Documents.Add
Selection.Paste
ActiveDocument.SaveAs FileName:=savedir & _
docname, AddToRecentFiles:=False
ActiveDocument.Close
End Sub


questa istruzioni non è necessaria in quanto già indicato nel comando SaveAs
<font color=red>ChangeFileOpenDirectory "A:\"</font id=red>
inoltre considera che l'istruzione di cui sopra non modifica fisicamente il percorso del documento attivo ma predispone l'indirizzamento delle operazioni che sono assegnate alla macro.

L'istruzione <font color=red>CurDir</font id=red> non è altro che il comando che restituisce il percorso completo del documento attivo. nella tua macro originaria sarebbe potuta essere usata così:


Sub AutoSalva()

<font color=red>Mydir= CurDir</font id=red>
ChangeFileOpenDirectory "A:\"
myDocname = ActiveDocument.Name
pos = InStr(myDocname, ".")
If pos > 0 Then
myDocname = Left(myDocname, pos - 1)
myDocname = myDocname & ".doc"
ActiveDocument.SaveAs FileName:=myDocname, _
FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False
End If
ChangeFileOpenDirectory <font color=red>Mydir</font id=red>**
ActiveDocument.Close
End Sub

**<font color=red>però non serve a nulla perchè non modifica fisicamente la radice inoltre avrebbe dovuto essere posta prima della chiusura del documento</font id=red>

saluti Andrea



Edited by - a10n11 on 04/13/2006 16:33:03

g.seveso
Inviato: Monday, April 17, 2006 7:10:12 PM

Rank: AiutAmico

Iscritto dal : 10/4/2000
Posts: 43
Grazie mille. La macro ora funziona benissimo e proprio come volevo!
Saluti
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.