Articoli con trattino(-) e immagini

di il
9 risposte

Articoli con trattino(-) e immagini

Buongiorno,
ho usato questa espessione per vedere le immagini su un listino, i file sono nella stessa cartella:

Sub InsImg()
Application.ScreenUpdating = False
ActiveSheet.Shapes.SelectAll
Selection.Delete
mPath = ActiveWorkbook.Path
r = 2 ' riga inizio prodotti
Lr = Range("A" & Rows.Count).End(xlUp).Row ' ultima riga da analizzare
For i = r To Lr
mFoto = Cells(i, 1)

If Len(mFoto & "") <> 0 Then ' se c'e' il nome prodotto
If Dir(mPath & "\" & mFoto & ".jpg") <> "" Then ' se la foto esiste
' inserisce foto e adatta a dimensioni cella/colonna B
With ActiveSheet.Pictures.Insert(mPath & "\" & mFoto & ".jpg")
'NOTA: in blu per centrare la foto nelle celle (puoi ovviamente variare), altrimenti vengono una attaccata all'altra
.Top = Range("B" & i).Top + 5
.Left = Range("B" & i).Left + 5
.Height = Range("B" & i).Height - 10
.Width = Range("B" & i).Width - 10
End With
End If
End If
Next i
Application.ScreenUpdating = True
End Sub

tutto perfetto ma putroppo nel mio caso mi esclude gli articoli che hanno il trattino (-) cosa posso fare? es. articoli 001;001-1;010;341-B;341-D;0-122 ecc. Perchè non vedo gli articoli che contegngono il trattino?
Grazie

9 Risposte

  • Re: Articoli con trattino(-) e immagini

    gbr8 ha scritto:


    tutto perfetto ma putroppo nel mio caso mi esclude gli articoli che hanno il trattino (-) cosa posso fare? es. articoli 001;001-1;010;341-B;341-D;0-122 ecc. Perchè non vedo gli articoli che contegngono il trattino?
    Siccome t'ho "portato" io qui, provo a seguirti. Non uso vba con Excel quindi potrei anche dire qualche strafalcione. Cerco di limitarmi ad analizzare il codice in "puro vba" senza considerare che si tratta di Excel.
    mFoto dovrebbe contenere l'articolo, se non ho capito male.
    Primo suggerimento: dichiarazione di tutte le variabili. mFoto in assenza di dichiarazione esplicita è Variant. Non vorrei che "001-1" venisse letto come un'operazione matematica.
    Sub InsImg()
    Dim mPath As String
    Dim r As Integer, lr As Integer, i As Integer
    Dim mFoto As String
    Fatto questo, hai verificato se entra nella parte True del secondo If, quello che inizia con If Dir?
    Fa' una cosa del genere
    Sub InsImg()
    Dim mPath As String
    Dim r As Integer, lr As Integer, i As Integer
    Dim mFoto As String
    
    Application.ScreenUpdating = False
    ActiveSheet.Shapes.SelectAll
    Selection.Delete
    mPath = ActiveWorkbook.Path
    r = 2 ' riga inizio prodotti
    Lr = Range("A" & Rows.Count).End(xlUp).Row ' ultima riga da analizzare
    For i = r To Lr
    	mFoto = Cells(i, 1)
    	If Len(mFoto & "") <> 0 Then ' se c'e' il nome prodotto
    		If Dir(mPath & "\" & mFoto & ".jpg") <> "" Then ' se la foto esiste
    			' inserisce foto e adatta a dimensioni cella/colonna B
    			With ActiveSheet.Pictures.Insert(mPath & "\" & mFoto & ".jpg")
    				'NOTA: in blu per centrare la foto nelle celle (puoi ovviamente variare), altrimenti vengono una attaccata all'altra
    				.Top = Range("B" & i).Top + 5
    				.Left = Range("B" & i).Left + 5
    				.Height = Range("B" & i).Height - 10
    				.Width = Range("B" & i).Width - 10
    			End With
    		Else
    			Debug.Print "cella saltata: A" & i & "; mFoto = " & mFoto  '<== riga da aggiungere
    		End If
    	End If
    Next i
    Application.ScreenUpdating = True
    End Sub
    in questo modo vedi quali celle eventualmente salta e il valore che contiene la variabile mFoto (le vedi nella finestra immediata)
    Se vuoi poi fare un debug passo passo modifica ulteriormente il codice così
    ...
    	mFoto = Cells(i, 1)
    	If InStr(1, mFoto, "-", 1) > 0 Then Stop  '<=== altra riga da aggiungere eventualmente
    	If Len(mFoto & "") <> 0 Then ' se c'e' il nome prodotto
    ...
    Quella riga ferma l'esecuzione del codice quando mFoto contiene un trattino.

    Se tutto questo non porta a niente, c'è questa possibilità: ci sono due tipi di trattino diversi: il segno "meno", quello con codice ASCII 45 e quello più lungo. Per capirci quello che (almeno nel mio computer) Word sostituisce al segno meno quando lo scrivi tra due parole, di cui però non sono riuscito a trovare il corrispondente codice, nemmeno nella mappa caratteri.
    Copiaincollando su notepad++ due parole intervallate dal trattino lungo "alla Word" e scrivendo a mano le stesse due parole separate dal segno meno, il "trova" di notepad++ rileva solo uno dei due, non entrambi, a dimostrazione che seppur visivamente uguali (almeno su notepad++) hanno in realtà contenuto diverso.
    Ho provato anche con il nome del file. Ho usato sempre il copia incolla (non ho capito come digitare da tastiera il "tratto lungo") ma se il file è stato creato con quello non viene riconosciuto se nella funzione Dir uso un nome digitato a mano con il segno meno.

    Edit: trovato. Il trattino "lungo" ha codice ASCII 150
  • Re: Articoli con trattino(-) e immagini

    Ciao e grazie per il tempo che mi hai dedicato,
    purtroppo non ne esco da questo casino, non ho molta dimestichezza con il codice e mi sono un po' perso...
    ho fatto le varie prove ma il risultato è sempre lo stesso.
    Perdonami se oso chiedere ancora un tuo intervento potresti ricostruire un esempio con il mio caso e vedere se lo risolvi,questi sono alcuni miei articoli: 001;001-1;010;341-B;341-D;0-122 magari tu riesci. O eventulmente se hai qualche suggerimento per risolvere il caso...
    Il mio trattino(-) è quello sotto il trattino basso(_) nella tastiera.
    Grazie infinite.
  • Re: Articoli con trattino(-) e immagini

    gbr8 ha scritto:


    ... potresti ricostruire un esempio con il mio caso e vedere se lo risolvi
    Di solito è chi ha il problema che cerca di mettere a disposizione qualcosa per permettere agli altri di riscontrare il problema ed analizzarlo. Ad esempio un foglio di excel dimostrativo e alcune immagini, in un archivio compresso, da provare sul proprio computer. Se poi le immagini sono tutte uguali e generiche non è importante, conta il fatto che abbiano lo stesso (identico) nome di quelle con le quali c'è il problema.
    Perché già il solo fatto di vedere sempre quella serie di articoli intervallati dal puntoevirgola non mi permette di capire come sono inseriti (immagino uno per ogni cella).
    Serve sapere con certezza come sono inseriti gli articoli nel foglio di calcolo, come sono i nomi dei file e se tra questi c'è coerenza.
    Il forum è qui ma devi metterci nella condizione di sapere tutto quello che c'è da sapere, con precisione, anche per provare eventuali file dimostrativi. Vedi tu, ora.
  • Re: Articoli con trattino(-) e immagini

    Perdonami ma sono nuovo e non ho poca dimestichezza con questi strumenti...
    Ho preparato il file compresso, come posso girartelo hai una mail?
    Grazie e scusa se approfitto della tua gentilezza ma secondo me siamo vicini alla risoluzione del problema.
  • Re: Articoli con trattino(-) e immagini

    gbr8 ha scritto:


    Perdonami ma sono nuovo e non ho poca dimestichezza con questi strumenti...
    Ho preparato il file compresso, come posso girartelo hai una mail?
    Per me non è un grosso problema, ti invio il mio indirizzo su messaggio privato. L'ideale però sarebbe condividerlo con tutti inserendolo come allegato ad un post. Se non hai l'etichetta "Allegati" (vicino ad "Opzioni", in basso) significa che non sei ancora abilitato per insufficiente numero di post.
    In questi casi puoi ovviare con file sharing esterno (c'è anche chi usa dropbox, google drive e via dicendo). Chiudo sempre queste indicazioni che per quando mi riguarda va bene tutto, purché non sia richiesta alcuna registrazione.
  • Re: Articoli con trattino(-) e immagini

    gbr8 ha scritto:


    ...
    mFoto = Cells(i, 1)
    If Len(mFoto & "") <> 0 Then ' se c'e' il nome prodotto
    If Dir(mPath & "\" & mFoto & ".jpg") <> "" Then ' se la foto esiste
    ...
    Dove si trova il nome giusto dell'articolo, quello con il trattino e non con la barra?
    Per chi non vede il file: nella colonna A i codici sono "fissi", la colonna B è calcolata con la formula =SOSTITUISCI([cella];"/";"-")
     
    --A-------B
    ...
    022/1----022-1
    ...
    807/D----807-D
    ...
    Finché cerchi in Cells(i, 1) il codice cerca un file che si chiama xxx/x.jpg ed ovviamente non lo trova perché si chiama xxx-x.jpg.
    Modifica quella riga e funziona tutto.
  • Re: Articoli con trattino(-) e immagini

    Fantastico funziona tutto perfetto
    grazie mille scua per la mia ingnoranza
  • Re: Articoli con trattino(-) e immagini

    Scusa ho un'altra domanda:
    secondo te un report di access dove ho creato un listino con immagini è possibile esportalo in excel con le immagini?
    Grazie
  • Re: Articoli con trattino(-) e immagini

    gbr8 ha scritto:


    secondo te un report di access dove ho creato un listino con immagini è possibile esportalo in excel con le immagini?
    Non lo so. Prova. Selezioni il report, senza aprirlo, e dal Ribbon o come si chiama mai (in base alla versioni di Access che usi) vai l'esportazione dell'oggetto selezionato in un foglio di calcolo di Excel.
Devi accedere o registrarti per scrivere nel forum
9 risposte