2013-06-14 6 views
11

Ho visto molti post su di noi xlApp.activesheet.Pictures.Insert(strImagePath) per inserire immagini in un foglio di calcolo con VBA, che funziona benissimo. L'unico problema è che lo inserisce come immagine collegata. Quindi se invio il foglio di calcolo fuori dalla nostra rete le immagini falliscono. Qualcuno può dirmi come usare Pictures.Insert per posizionare l'immagine come immagine incorporata, o forse un altro metodo che la inserirà? Sto anche chiamando questo metodo dall'accesso se questo aiuta affatto.VBA per inserire immagine incorporata excel

risposta

18

è possibile utilizzare il metodo shapes.addpicture

activesheet.Shapes.AddPicture Filename:="C:\test\desert.jpg", linktofile:=msoFalse, _ 
      savewithdocument:=msoCTrue, Left:=0, Top:=0, Width:=100, Height:=100 
+0

Grazie @JosieP! Funziona alla grande Ora sto cercando di assegnarlo a un oggetto Shape in modo da poter apportare alcune modifiche. Ho fatto 'Dim shpPic as Shape' e' Set shpPic = xlApp.activesheet.Shapes.AddPicture ... 'e ottengo un errore di mancata corrispondenza di tipo. Qualche idea del perché? – DasPete

+0

basato sulla parte xlApp Immagino che tu stia automatizzando da un'altra app: l'app ha oggetti Shape? in tal caso usa 'dim shpPic come Excel.Shape' – JosieP

+0

Ciao @JosieP, sì sto chiamando da Access. Non riesco a usare 'Excel.Shape' perché non voglio avere un riferimento alla libreria Excel perché ho utenti con una vasta gamma di sistemi. Ho dichiarato la mia istanza di Excel in questo modo: 'Dim xlApp as Object'' Imposta xlApp = CreateObject ("Excel.Application") 'Così ho provato' Dim shpPic = xlApp.Shape' e questo mi dà "Tipo definito dall'utente non definito" errore. Qualche idea? – DasPete

0

noti che è possibile impostare i parametri di altezza richiesta Larghezza e a -1, che poi mantiene l'altezza e la larghezza dell'immagine originale!

Activesheet.Shapes.AddPicture Filename:="C:\image.jpg", LinkToFile:=msoFalse, _ 
     SaveWithDocument:=msoTrue, Left:=0, Top:=0, Width:=-1, Height:=-1 

http://excelmatters.com/2013/11/25/default-picture-size-with-shapes-addpicture/

(aggiunto come un'altra risposta per aumentare la visibilità come ho lottato con questo problema per le età e non ho trovato questa soluzione documentato altrove.)