ho avuto una seconda occhiata al shahkalpeshs risponde e si avvicinò con la seguente soluzione: (scritto in Outlook 2003)
Option Explicit
Private Sub getImages()
Dim xmlhttp_ As xmlhttp
Dim htmldoc As Object
Dim currentImage As Object
Dim currentResponse() As Byte
Dim startTime As Date
Dim maxTime As Long
Dim pathFolder As String
Dim pathFull As String
Dim nrFile As Integer
pathFolder = "C:\YourFolder\Images\" '"(small fix for stackoverflow syntaxhighlighter)
maxTime = 30 ' max time to load 1 File in seconds '
If Me.ActiveWindow.CurrentItem.GetInspector.EditorType = olEditorHTML Then
Set htmldoc = Me.ActiveWindow.CurrentItem.GetInspector.HTMLEditor
Set xmlhttp_ = New xmlhttp
For Each currentImage In htmldoc.images
xmlhttp_.Open "GET", currentImage.src
If Left(currentImage.src, 8) <> "BLOCKED:" Then
xmlhttp_.Send
startTime = Now
pathFull = pathFolder & currentImage.nameProp
pathFull = Replace(pathFull, "?", vbNullString)
pathFull = Replace(pathFull, "&", vbNullString)
Do While xmlhttp_.readyState <> 4
If DateTime.DateDiff("s", startTime, Now) > maxTime Then Exit Do
DoEvents
Loop
If xmlhttp_.readyState = 4 Then
If Dir(pathFull) <> "" Then Kill pathFull
nrFile = freeFile
Open pathFull For Binary As #nrFile
currentResponse = xmlhttp_.responseBody
Put #nrFile, , currentResponse
Close #nrFile
End If
End If
Next currentImage
End If
Set xmlhttp_ = Nothing
Set currentImage = Nothing
Set htmldoc = Nothing
End Sub
Questo codice scaricare tutte le immagini che sono visualizzata nella vostra ActiveWindow
e salvali in una cartella.
Sarà necessario aggiungere un riferimento a Microsoft XML (qualsiasi versione> = 2.6 dovrebbe funzionare) attraverso Strumenti-> Riferimenti nel VBA Editor
Se si desidera, è anche possibile impostare un riferimento alla Libreria Microsoft HTML Object e il cambiamento:
Dim htmldoc As Object
Dim currentImage As Object
a:
Dim htmldoc As HTMLDocument
Dim currentImage As HTMLImg
Per quanto riguarda il tuo commento:
@marg, Grazie per la risposta dettagliata. Non riesco ancora a credere che la soluzione debba essere così complessa: l'immagine è già in mostra, perché dovrei scaricarla di nuovo? E se volessi salvare solo una singola immagine? (In Outlook 2003, è stato possibile fare clic con il tasto destro sull'immagine e selezionare Salva come ... ora non più.) Poiché questo è il punto di partenza per una soluzione realmente realizzabile, e poiché non sembra esserci alcuna soluzione migliore nell'attuale Outlook - ti sto dando la taglia ...
Non ho il 2007 per cercare una soluzione non di programmazione.
Non credo che il MailItem
Object (CurrentItem
nella mia soluzione è un MailItem
) differisce molto tra le versioni (ma basare quel presupposto sulla ricerca 0%: D) e non ero in grado di individuare il percorso locale diretta dove sono archiviate le immagini visualizzate anche se sono abbastanza sicuro che dovrebbero essere nella cartella cache del tuo browser. Strisciando la cartella per un file con il nome currentImage.nameProp
e copiandolo nella cartella di destinazione sarebbe una soluzione alternativa. Ridigitare semplicemente l'immagine non dovrebbe essere così male: D
+1. Bella risposta! –
Grazie per la risposta dettagliata. Non riesco ancora a credere che la soluzione debba essere così complessa: l'immagine è già in mostra, perché dovrei scaricarla di nuovo? E se volessi salvare solo una singola immagine? (In Outlook 2003, è stato possibile fare clic con il tasto destro sull'immagine e selezionare Salva come ... ora non più.) Poiché questo è il punto di partenza per una soluzione realmente realizzabile, e poiché non sembra esserci alcuna soluzione migliore nell'attuale Outlook - Ti sto dando la taglia ... – AviD
Vedi la mia risposta modificata. – marg