Condividi:        

Collegamenti ipertestuali

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Collegamenti ipertestuali

Postdi BG66 » 24/11/21 23:23

Buona sera.
Ritorno dopo un periodo di assenza :oops: ... fortunatamente quello che Anthony mi ha insegnato mi ha permesso di andare avanti per un pò!!

Vorrei mettere ordine nelle tante immagini che mi aiutano a creare cartelli ad hoc. L'idea è quella di creare un catalogo:

a) con, ove necessario, diverse userform che a seguito della selezione dal menu a tendina:
a.1) contengano tutte le miniature delle immagini presenti nella specifica cartella;
a.2) che le singole miniature possano essere aperte tramite un collegamento ipertestuale.

b) Che anche l'apertura della cartella "cartelli" specifica avvenga tramite collegamento ipertestuale (il tracciato del percorso è presente nella textBox "posizione")


https://www.dropbox.com/s/cqw2ecyhy1lcoto/Prova%20archivio%20immagini.rar?dl=0

Grazie per l'aiuto.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Collegamenti ipertestuali

Postdi Anthony47 » 25/11/21 19:38

Bentornato

C'e' un motivo per complicarsi la vita mettendo un numero ignoto di immagini in un numero ignoto di controlli da creare su una userform?
In attesa di una valida risposta ti propongo una alternativa che usa un foglio excel, come fatto sul file scaricabile qui:
https://www.dropbox.com/s/0ugkpmtput9ul ... B.xls?dl=0
Si tratta del tuo file, inutilizzato, con l'aggiunta del foglio Catalogo e il mio codice su Modulo3 del vba.

In particolare ho riciclato quanto fatto in passato (esempio qui: viewtopic.php?f=26&p=655725#p655725) per ottenere l'elenco delle immagini (vedi Function RecurDir su Modulo3)

Uso la Function RecurDir all'interno della macro principale, Sub CreaCatalogo

Questa macro crea su un foglio specifico (io ho usato Catalogo) l'elenco delle immagini presenti a partire da un certo percorso; in particolare inserisce:
-in colonna A, la directory con hyperlink per aprire quel percorso
-in colonna B, il nome immagine
-in colonna C, l'immagine con hyperlink per aprire l'immagine

All'occorrenza puoi applicare il filtro sul contenuto di colonna A per selezionare solo ad esempio le immagini presenti in "Cartelli Emergenza", immaginando che il nome cartella sia "parlante"

Il codice della macro principale:
Codice: Seleziona tutto
Sub CreaCatalogo()
Dim FArr() As String, Catag As Worksheet, AllPics
Dim cPic, mPW As Single
'
Set Catag = Sheets("Catalogo")                      '<<< Il foglio Catalogo
AllPics = Array("jpg", "png", "gif")                '<<< Altri formati di immagini?
StrDir = "D:\DDownloads\byBG66_C11125\Immagini"     '<<< Il Percorso iniziale
'
'Pulisce l'area:
Catag.Select
Range("A:A").Hyperlinks.Delete
Range("A:A").RowHeight = 15
Call ClearPic
Range("A:C").Clear
'Compila l'elenco delle Immagini:
ReDim FArr(1 To 1)
Call RecurDir(StrDir, AllPics, FArr)
'
'Compila percorso, nome immagine e mostra immagine:
For i = 1 To UBound(FArr)
    mysplit = Split(FArr(i) & " ", "\", , vbTextCompare)
    ub = UBound(mysplit)
    If ub > 0 Then
        Cells(i + 1, 1) = Trim(mysplit(ub - 1))
        Cells(i + 1, 2) = Trim(mysplit(ub))
        'imposta h.link su percorso:
        ActiveSheet.Hyperlinks.Add Anchor:=Cells(i + 1, 1), Address:= _
            Replace(FArr(i), Cells(i + 1, 2).Value, "", , , vbTextCompare), TextToDisplay:= _
            Cells(i + 1, 1).Value
        Rows(i + 1).RowHeight = 100                     'Imposta l'altezza riga
        '
        'Posiziona l'immagine:
        myT = Cells(i + 1, 3).Top + 5
        myL = Cells(i + 1, 3).Left + 5
        myH = Cells(i + 1, 3).Height - 5
        '
        Set cPic = ActiveSheet.Shapes.AddPicture(FArr(i), False, True, myL, myT, True, True)
        cPic.LockAspectRatio = msoTrue
        cPic.ScaleHeight (myH / cPic.Height), msoTrue
        cPic.Placement = xlMove
        If cPic.Width > mPW Then mPW = cPic.Width
        cPic.Name = "FOTO_DA_" & Cells(i + 1, 3).Address(0, 0)
        'Imposta H.Link su immagine:
        ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Shapes(cPic.Name), Address:=FArr(i)
    End If
Next i
'Intestazioni su riga 1:
Range("A1:C1").Value = Array("Percorso", "NomeImmagine", "Picture")
'Formatta colonne:
Columns("A:B").EntireColumn.AutoFit
With Rows("1:1")
    .HorizontalAlignment = xlCenter
    .Font.Bold = True
End With
With Range("C:C")
    .ColumnWidth = 10
    acw = .Width
    .ColumnWidth = mPW * .ColumnWidth / acw
End With
End Sub

Come sempre, le istruzioni marcate <<< in testa sono "parametri" da impostare secondo la tua situazione.

Così fatto mi sembra molto piu' semplice di come l'avevi immaginata, vedi quanto riesci a riciclare

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Collegamenti ipertestuali

Postdi BG66 » 26/11/21 06:36

Cavolo Anthony,
hai annientato la mia vena creativa ..io mi vedevo già proiettato nell'empireo dei geni creatori di cataloghi con userform!!!

Scherzi a parte, ora ho materiale su cui lavorare.... ma sicuramente un tocco "artistico" dovrò infilarcelo... :lol:

Quindi come dicono in TV, per il momento ma solo per il momento...grazie.

Gene
STAY SAFE
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Collegamenti ipertestuali

Postdi Anthony47 » 26/11/21 11:03

io mi vedevo già proiettato nell'empireo dei geni creatori di cataloghi con userform!!!
Errore: il plurale di gene non e' geni

Capirei l'uso della form se lavorassi in VB, ma VBA e' una estensione di un contenitore (excel, in questo caso) che offre tante potenzialita; se hai pagato la licenza tanto vale sfruttarla...
Per il tocco artistico sei certamente piu' indicato di me :D

Buona giornata
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Collegamenti ipertestuali":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti