Sto lavorando al porting di project in Windows su OSX. Ho superato i problemi con VBA per OSX Word 2011 not allowing you to send POSTs to a server e ho capito how to return a string result from an external script. Ora devo inserire un'immagine nel mio file Word da un URL che viene costruito utilizzando il ritorno del mio script esterno.Aggiunta dell'immagine dall'URL in Word 2011 per Mac OSX tramite VBA
Il tentativo attuale è la seguente, e funziona in Windows, ma si blocca Word in OSX:
Selection.InlineShapes.AddPicture FileName:=File_Name, _
LinkToFile:=False, SaveWithDocument:=True
Dopo aver fatto qualche ricerca, sembra che Microsoft potrebbe aver disabilitato questa funzionalità in OSX come un "rischio per la sicurezza" . Devo ancora farlo funzionare. Qualcuno sa di un modo in VBA per Office 2011 per fare questo lavoro, o escludendo che una soluzione alternativa? Sto cercando di evitare di scrivere il file immagine sul disco, se possibile.
UPDATE: Ho creato uno script Python per ottenere il file di immagine da un URL, ma io ancora non so come ottenere questa immagine da script Python in VBA, e da lì nel documento di Word al posizione del cursore. I pezzi importanti della sceneggiatura sono sotto. L'immagine viene letta come un oggetto PIL
e posso mostrarlo usando semplicemente img.show()
, ma non sono sicuro di quale sia il tipo di file o come convincere VBA ad accettarlo.
# Import the required libraries
from urllib2 import urlopen, URLError
from cStringIO import StringIO
from PIL import Image
# Send request to the server and receive response, with error handling!
try:
# Read the response and print to a file
result = StringIO(urlopen(args.webAddr + args.filename).read())
img = Image.open(result)
img.show()
except URLError, e:
if hasattr(e, 'reason'): # URL error case
# a tuple containing error code and text error message
print 'Error: Failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'): # HTTP error case
# HTTP error code, see section 10 of RFC 2616 for details
print 'Error: The server could not fulfill the request.'
print 'Error code: ', e.code
Si noti che in quanto sopra, args.webAddr
e args.filename
sono passati allo script utilizzando la libreria argparse
. Questo script funziona e mostrerà il file immagine che mi aspetto. Qualche idea su come ottenere quell'immagine in Word 2011 per OSX e inserirla sotto il cursore?
Grazie mille!
Modifica: aggiornato il collegamento al progetto dalla migrazione a github.
Sì, Vba su mac è horror. Sono bloccato con qualche codice me stesso. Spero che la risposta che hai, funzioni per te :) – Kathara