Newsgroup: it.comp.appl.access
Titolo: inserire immagine in doc. word aperto da VBA

Salve, attraverso una mia vecchia routine con la quale apro e compilo 
automaticamente un doc. word da una maschera access, ho la necessita' di 
inserire uno specifico file immagine in uno specifico punto del documento.
Qualcuno sa darmi una dritta?
Grazie 1000 a tutti
 
-- 
Marco67 
 
 


supponi che il file doc si chiami test.doc e sia in c:\
supponi che il file immagine si chiami pippo.bmp
 
inserisci nel file doc un segnalibro chiamato "immagine" nel punto dove 
vuoi far apparire l'immagine
 
sull'evento che deve aprire e compilare il file :
 
Dim objWord As Object
              Set objWord = CreateObject("Word.Application")
 
 
                 objWord.Visible = True
 
                 objWord.Documents.Open CurrentDBDir & "c:\test.doc"
 
'faccio altre cose  sul doc
 
'e ora inserisco l'immagine
 
                 objWord.ActiveDocument.Bookmarks("immagine").Select
                 objWord.Selection.TypeText Text:=" "
 
            objWord.Selection.InlineShapes.AddPicture 
FileName:="C:\pippo.bmp", LinkToFile:= _
         False, SaveWithDocument:=True
 
 
'faccio altre cose tipo compilare altri segnalibri...salvare stampare etc
 
 
              Set objWord = Nothing
 
 
ciao
BFS
 
 
 
 

 ha scritto nel messaggio 
news:52f27023$0$1370$4faf...@reader1.news.tin.it...

Grazie 1000, ho preso il tuo spunto e l'ho inserito nel mio codice (che ti 
allego di seguito), adesso ho il file immagine inserito in alto a sx (dove 
ho posizionato il mio segnalibro: 'logo').
Adesso sto cercando di ridimensionare l'immagine, sempre da codice.
Qualora avessi ancora problemi, proseguo la discussione rompendoti 
nuovamente le scatole.
Per adesso direi, perfetto! E grazie infinite!
Marco67
 
 


ti "insegno" un trucco...
vai nel file word...registra una nuova macro e fai tutte le operazioni 
di cui non sai il corrispettivo codice in vba.
esempio ridimensionare l'immagine.
salva la macro e vai a vederti il codice vba generato.
copialo nel tuo modulo access anteponendo ad ogni istruzione objWord.
 
ciao
BFS
 
 
 
 
 
 

 ha scritto nel messaggio 
news:ld05c1$cku$1...@speranza.aioe.org...

Cavolo, direi una sorta di... traduttore  Italiano > Vba !!!
Grazie 1000 ancora
Marco67
 
 


Se invece devo copiare una serie di immagini, presenti in uno cartella specifica, in word, senza quindi specificare il nome del file, come posso fare?
esempio se ho 100 foto di nomi differenti in una cartella


se le tue foto sono in c:\tuacartella e dentro ci sono solo foto
 
puoi ricavare i 100 nomi delle foto con questo codice
 
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
Set oFolder = oFSO.GetFolder("C:\tuacartella")
 
For Each oFile In oFolder.Files
 
     Debug.Print oFile.Name
 
     i = i + 1
 
Next oFile
 
 
adatta il codice di conseguenza
 
 
BFS
 
 
 


ok grazi, provo

Il giorno martedì 3 gennaio 2023 alle 15:42:25 UTC+1 BFS ha scritto:

Scusami per l'ignoranza ma non sono un programmatore, Degub.Print oFile.Name che fa di preciso?
la macro l' ho creata in excel, gli ho detto di aprire un file word base con vari segnalibri e nei vari segnalibri deve copiare testi e valori da excel e incollare anche foto presenti in cartelle specifiche.

Il giorno martedì 3 gennaio 2023 alle 15:42:25 UTC+1 BFS ha scritto:

l'oggetto con i i-nomi è oFile.Name?
il nome i-esimo è oFile.Name(i)?


debug.print serve solo per visualizzare nella finestra immediata il 
valore di quel oFile.name
era per farti un esempio
 
posizionarti su un segnalibro e assegnargli del testo mi par di capire 
che sai farlo
 
per la immagine c'è l'esempio in questa discussione
 
se ora vuoi inserire n immagini in un segnalibro devi fare un ciclo.
 
 
ti faccio un esempio cosi forse poi riesci ad adattarlo al tuo caso.
 
File word c:\doc.docx
Segnalibro nel foglio word chiamato "immagine"
cartella immagini   c:\tuacartella\
 
 
questo codice incolla tutte le foto in quel quel segnalibro
 
'apro word e il file da compilare
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
 
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer
 
 
 
objWord.Visible = True
objWord.Documents.Open "c:\doc.docx"
 
 
'mi posizione sul segnalibro chiamato immagine
objWord.ActiveDocument.Bookmarks("immagine").Select
objWord.Selection.TypeText Text:=" "
 
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\tuacartella")
 
'ciclo tutti i file immagine nella cartella e li incollo sul segnalibro
For Each oFile In oFolder.Files
 
     objWord.ActiveDocument.Bookmarks("immagine").Select
     objWord.Selection.TypeText Text:=" "
     objWord.Selection.InlineShapes.AddPicture 
FileName:="c:\tuacartella\" & oFile.Name, LinkToFile:= _
     False, SaveWithDocument:=True
     i = i + 1
 
Next oFile
 
 
 
nel tuo caso se lavori da excel, il nome del segnalibro da andare a 
compilare lo troverai in una cella excel
 
BFS
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


no... quel i+1 serviva a me per altre cose
il codice tuo è
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
Set oFolder = oFSO.GetFolder("C:\tuacartella")
 
For Each oFile In oFolder.Files
 
     Debug.Print oFile.Name 'oppure msgbox oFile.Name
 
Next oFile
 
 
 
che tradotto vuol dire
per ogni file presente nella cartella - For Each oFile In oFolder.Files
stampa il nome - Debug.Print oFile.Name
passa al successvo -Next oFile
 
BFS
 
 


Grazie infinite, funziona.
Ora vorrei poter inserire didascalie sotto le foto con il nome della foto e impostare una dimensione fissa per le foto.
Grazie ancora


direi che basta modificare il ciclo cosi
 
Dim imgWord As Object
For Each oFile In oFolder.Files
 
     objWord.ActiveDocument.Bookmarks("immagine").Select
     objWord.selection.TypeText Text:=oFile.Name & vbNewLine
 
 
     Set imgWord = 
objWord.selection.InlineShapes.AddPicture(FileName:="c:\tuacartella\" & 
oFile.Name, LinkToFile:= _
     False, SaveWithDocument:=True)
 
 
     imgWord.Height = 200
     imgWord.Width = 200
 
Next oFile
 
 
BFS