Newsgroup: it.comp.lang.visual-basic
Titolo: [Word] VBA -> incollare testo in variabile che assegni nome file

Buongiorno a tutti,
riposto il messaggio, perchè prima era incomprensibile, di seguito
trovate codice e la funzionalità che cerco... :)
[CODICE]
Const conPercorso As String = "C:\Offerte"
'La variabile strProtocollo contiene un codice che è testo
Dim strProtocollo As String
    With Selection
    .HomeKey unit:=wdStory
    .MoveRight unit:=wdCharacter, Count:=11
    .MoveRight unit:=wdCharacter, Count:=17, Extend:=wdExtend
    [COMMENTO"]'Ho selezionato il codice che mi interessa, e lo copio
    .Copy
    [COMMENTO]'Siccome se lo copio mi viene tagliato, lo incollo subito
e nel documento di word mi ricompare il testo selezionato e tagliato.
    .Paste
  [COMMENTO]'Qui come hai detto tu assegno alla variabile strProtocollo
la selection.text
   strProtocollo = .Text
    .MoveRight unit:=wdCharacter, Count:=4
    [COMMENTO]'con incolla incollo una seconda volta il protocollo, e
funziona
    .Paste
    .MoveRight unit:=wdCharacter, Count:=4
    [COMMENTO]'Ma purtroppo, quando gli dico di inserire in word la
variabile che contiene il protocollo, non succede nulla, su word non mi
da nulla :mad:
    .InsertAfter strProtocollo
    End With
 ChangeFileOpenDirectory conPercorso
   With Word.Application
        .ActiveDocument.SaveAs FileName:=Selection.Text,
FileFormat:=wdFormatDocument
     End With
[COMMENTO]' Mi da un errore di runtime 4198
End Sub
[/CODICE]
Lo scopo della mia funzione, è quello di copiare il numero di
protocollo presente nel documento, e lo faccio quando faccio la
selezione. Salvare il file con numero di protocolo, nella directory
conPercorso=c:/Offerte
Ho provato anche questa opzione
  .ActiveDocument.SaveAs FileName:=strProtocollo,
ma non funziona lo stesso
Quindi mi chiedo,
1) come faccio passare ad una variabile il testo selezionato?
2) come faccio a testare che la variabile contenga il testo che le ho
passato?
3) come faccio a salvare il file con il nome che contenga la variabile?
Ho forse sbagliato sintassi?
Ho sottomano due testi (presi in biblio...): :book:
 il primo è Le macro di office di DavidBoctor, ma è vecchio
il secondo è Word: Macro e VBA  da dove ho tratto parte del codice, ma
ciò che nel libro sembra funzionare, tipo selection.insertAfter
NomeVariabile da me non va.
Grazie x qualsiasi help,
Sam

 Sono 4 words, mi sono detta devo fare 4 cicli.
No, sono 7, contano anche i trattini.
Ma hai provato ad usare il registratore di macro per vedere cosa salta fuori?
Non serve fare alcun loop, basta che la macro estenda la selezione alle 7 words
a destra del cursore.
Il tutto si ottiene con
    Selection.MoveRight Unit:=wdWord, Count:=7, Extend:=wdExtend
Ma ancora meglio sarebbe estendere la selezione fino al prossimo spazio (se è
garantito che ci sia dopo il codice protocollo, però)
    Selection.Extend " "
A questo punto, in ogni caso per utilizzare il testo selezionato come nome file:
    ActiveDocument.SaveAs FileName:=Trim(Selection.Text),
FileFormat:=wdFormatDocument
[La Trim() serve per eliminare l'eventuale spazio in eccesso a destra.]
Infine per resettare la selezione
    Selection.HomeKey
Come vedi non serve né copiare né incollare testo da nessuna parte.
Nella guida di Word è spiegato bene cosa si può fare con l'oggetto Selection, ti
consiglio di darci una lettura.
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 > Sono 4 words, mi sono detta devo fare 4 cicli.No, sono 7, contano anche i trattini.


 > Sono 4 words, mi sono detta devo fare 4 cicli.No, sono 7, contano anche i trattini.
