Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

inserire immagine in doc. word aperto da VBA

1,021 views
Skip to first unread message

Marco67

unread,
Feb 5, 2014, 11:54:27 AM2/5/14
to
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


bfs

unread,
Feb 5, 2014, 12:08:51 PM2/5/14
to
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




Marco67

unread,
Feb 6, 2014, 5:48:53 AM2/6/14
to

"bfs" <b...@alice.it> 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


BFS

unread,
Feb 6, 2014, 9:14:28 AM2/6/14
to
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






Marco67

unread,
Feb 7, 2014, 9:37:35 AM2/7/14
to

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


Simone Fieni

unread,
Jan 3, 2023, 9:26:27 AM1/3/23
to
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

BFS

unread,
Jan 3, 2023, 9:42:25 AM1/3/23
to
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



Simone Fieni

unread,
Jan 3, 2023, 10:32:40 AM1/3/23
to
ok grazi, provo

Simone Fieni

unread,
Jan 3, 2023, 10:42:06 AM1/3/23
to
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.

Simone Fieni

unread,
Jan 3, 2023, 10:46:06 AM1/3/23
to
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)?

BFS

unread,
Jan 3, 2023, 11:00:18 AM1/3/23
to
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




















BFS

unread,
Jan 3, 2023, 11:04:28 AM1/3/23
to
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


Simone Fieni

unread,
Jan 3, 2023, 1:27:26 PM1/3/23
to
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

BFS

unread,
Jan 4, 2023, 1:59:52 AM1/4/23
to
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

0 new messages