Humm...
Effettivamente l' istruzione ActiveSheet.Pictures.Insert quando inserisce la picture non la inserisce nel formato originale ma apparentemente la ridimensiona; questo fa a pungni con il successivo ridimensionamento, che e' calcolato rispetto alla falsa dimensione originale ma applicato alla vera dimensione originale. Inoltre ambedue le istruzioni di ridimensionamento erano applicati all' altezza (ScaleHeight). Infine il ridimensionamento non era da applicare all' immagine "Non disponibile".
Vista la difficolta' di governare il modo in cui "ridimensiona" l' immagine allora il calcolo lo facciamo prima cosi' l' inserimento successivo lo possiamo fare gia' con le dimensioni effettive.
Le modifiche riguardano la sezione If (CELLA.Text <> "") Then /End If, che ora ha questo aspetto:
- Codice: Seleziona tutto
If (CELLA.Text <> "") Then
If Dir(StdDir & CELLA.Text & ".jpg") = "" Then
'ActiveSheet.Pictures.Insert(DefPic).Select 'Se si decide di usare foto esterna
Sheets("Parametri").Shapes("NODISPO").Copy 'AGGIUNGI
ActiveSheet.Paste 'AGGIUNGI
Else
'Istruzioni per EXCEL2003
ActiveSheet.Pictures.Insert(StdDir & CELLA.Text & ".jpg").Select
'Aggiunte per compatibilita EXCEL2010:
myW = Selection.ShapeRange.Width * 1 'calcola larghezza (0.5 e' arbitrario)
myH = Selection.ShapeRange.Height * 1 'calcola l' altezza (idem)
'MsgBox (myW & " -- " & myH) '<<< AGGIUNGERE PER TEST
Selection.ShapeRange.Delete 'cancella la prima immagine
xPos = 0 'calcola la posizione left
yPos = 0 'calcola la posizione top
'inserisce per compatibilita EXCEL2010:
'Calcolo prima le dimensioni di inserimento
www = largo
hhh = alto
If (myH / alto) > (myW / largo) Then www = myW * hhh / myH
If (myW / largo) > (myH / alto) Then hhh = myH * www / myW
ActiveSheet.Shapes.AddPicture(StdDir & CELLA.Text & ".jpg", False, True, xPos, yPos, www, hhh).Select
End If
Selection.Name = "FOTO_DA_" & CELLA.Address(0, 0)
'eliminate qui le istruzioni per ridimensionare
'PER POSIZIONARE L'IMMAGINE AL CENTRO DELLA CELLA CHE HO DECISO:
Selection.ShapeRange.Left = CELLA.Offset(0, (Jolly)).Left - Selection.ShapeRange.Width / 2 + CELLA.Offset(0, (Jolly)).Width / 2
Selection.ShapeRange.Top = CELLA.Offset(0, 0).Top - Selection.ShapeRange.Height / 2 + CELLA.Offset(0, (Jolly)).Height / 2
End If
Questo per quanto riguarda la dimensione sul foglio.
Per il peso delle immagini la situazione e' invece confusa:
-ho creato tramite Microsoft Picture Manager una immagine ridotta della ABB00010A: originale occupa 624 KB per 926*217; ridotto occupa 553KB per 148*35 (dove e' finita la riduzione? Eppure in visualizzazione si vede che e' in bassissima risoluzione)
-idem con l' immagine ATT02900A: originale occupa 1043 KB per 3610*856; ridotto occupa 648KB per 1805*428 (questo quadra di piu')
Test A
Se cancello tutte le immagini dal foglio IMMAGINI, ilfile rimane da 36,8KB
Se inserisco la ATT02900A-small il file diventa (dopo il salvataggio) di 44,9KB
Se a mano allargo la dimensione dell' immagine (in modo che occupi le 4 celle B4:C5) il file diventa da 115KB, a momentanea dimostrazione della mia tesi che il file viene salvato coerentemente con la dimensione sul video)
Se inserisco la ATT0290A-originale, il file diventa di 1,05 MB (a immediata smentita del teorema del salvataggio file coerente con la dimensione a video; ma anche senza nessuna spiegazione del perche' il comportamento e' drasticamente diverso dal test precedente.
Se a mano ridimensiono l' immagine c' e' una modesta variazione della dimensione del file (che arriva a 1,06MB)
L' uso di Menu /Strumenti Immagine /Formato, Comprimi immagine non produce nessun effetto
Se torno alla ATT02900A-small, il file ritorna a 44,9 KB
Dimensione aggiungendo tutti gli altri disegni eccetto la ABB00010A, 134 KB
Dimensione aggiungendo la ABB00010A-small, 690 KB
Dimensione aggiungendo la ABB00010A-originale, 724 KB
Test B
AVEVO CREATO UNA COPIA del file iniziale, scegliendo (al momento del File /Salva con nome) in Strumenti l' opzione "Comprimi immagini..." con la spunta su Usa risoluzione documento (che in Menu /File /Opzioni /Impostazioni avanzate, sezione Dimensione e qualita' dell' immagine e impostato su 220 dpi) e ho ripetuto le prove:
Dimensione senza immagini 38,3 KB
Dimensione con ATT0290A-originale, 1,05 MB
Dimensione con ATT0290A-small, 46,5 KB
Dimensione aggiungendo tutti gli altri disegni eccetto la ABB00010A, 136 KB
Dimensione aggiungendo la ABB00010A-small, 692 KB
Dimensione aggiungendo la ABB00010A-originale, 726 KB
Da questi test sembrerebbe che ci sono delle immagini che sono "inclini" a farsi comprimere, altre che sono refrattarie.
Allora ho inserito in una nuova cartella alcune foto provenienti da un cellulare (risoluzione 3200*1800, circa 1,5 MB l' una), e ho ripetuto l' inserimento delle immagini.
Risultato: avendo inserito 5 foto a dimensioni (come da Parametri) di 50 *100 il file occupa 166 KB
Ripetendo l' inserimento a 100*200 il file occupa 442 KB
Riportando la dimensione a 50*100 il file ritorna a 166 KB
Queste prove sono state fatte sul file originale, e sembrerebbe dimostrare che alcune immagini sono disponibili a essere compresse, altre no; non sono un conoscitore dei formati immagine, quindi anche io mi chiedo perche' succedono queste cose, ma la risposta e' vecchia: Nescio, sed fieri sentio et excrucior
Prova con altre immagini...
Ciao