Buongiorno,
eccomi nuovamente con un altro problema che onestamente non riesco a capire dove è l'errore.
Avrei bisogno di una routine che mi permetta prendere una foto da qualsiasi parte del computer, rinominarla, ridurla di dimensioni e salvarla in una cartella specifica con un nome specifico.
Per fare tutto ciò ho trovato varie soluzioni online per i vari steps. Ho cercato di assemblare le varie opzioni per avere un codice finale che facesse al mio caso e sono riuscito nell'intento. Alle prime prove tutto ha funzionato perfettamente ma
poi mi sono reso conto che come arrivo alla riga 38 del foglio il codice va in debug. Adesso è vero che non capisco niente di VBA ma non riesco proprio a capire perchè funziona per 38 righe e poi va in debug.
Quindi, come al solito, chiedo un aiuto a voi.
Di seguito il miocodice con la descrizione di ciò che vorrei fare.
Forse è proprio il codice impostato male.
Dim shp As Shape
Dim cht As ChartObject
Dim strPath As String
Dim strfile As String
Dim DestD As String
Dim n As Integer, x As String
Dim img As String
Dim msg As String
Dim Nphoto As String
If Me.LB_Crew.ListIndex = -1 Then
msg = MsgBox("Crew member shall be selected to add a new photo", vbInformation, "READ INFORMATION")
Exit Sub
Else
DestD = ActiveWorkbook.Path & "\Matrix Pictures" & ActiveCell.Offset(0, 1) & ".jpg" <=== assegno la Path ed il nome ove salvare la foto
With Application.FileDialog(msoFileDialogFilePicker) <====== Apro la cartella generale
.Show
If .SelectedItems.Count = 0 Then Exit Sub
strfile = .SelectedItems(1) <=== seleziono una immagine
End With
ActiveSheet.Pictures.Insert (strfile) <======== inserisco l'immagine sul foglio excel
x = ActiveSheet.Shapes.Count
For n = 1 To x
Nphoto = ActiveSheet.Shapes(n).Name <======= trovo ll'immagine ed assegno il nome
Next
Set shp = ActiveSheet.Shapes(Nphoto) <===== Assegno le nuove dimensioni all'immagine e la copio
shp.Width = 100
shp.Height = 100
shp.CopyPicture xlScreen, xlPicture
Set cht = ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height)
<===Creo un ChartObject ed incollo la nuova immagine dimensionata
cht.Chart.Paste
cht.Border.LineStyle = 0
cht.Chart.Export DestD <==== esporto la nuona immagine nella cartella scelta con il nome rucuperato dalla Listbox
img = DestD
Me.foto.Picture = LoadPicture(img) <==== la carico sulla userform
cht.Delete
shp.Delete
Set shp = Nothing
Set cht = Nothing
End If
Me.LB_Crew.ListIndex = -1 <==== riporto la listindex al valore iniziale in modo da attivare il messaggio in caso non ci sia unapersona selezionata
Adesso il punto è:
perchè fino alla riga 38 va tutto bene ed alla riga 39 va in debug sulla seguente riga?
cht.Chart.Paste
Anticipatamente ringrazio
Saluti
Giuseppe