Domanda.

nome=Giuliano
cognome=Quattrini
versione=97
conosco2=medio
macro=SI
email=farmaciaginaneschi@virgilio.it
problema=questa istruzione della macro serve a creare il link iperterstuale da una cella al file fattura0513.jpg

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
'"Fatture\fattura0513.JPG"

Nella cartella fatture ci sono le immagini di tutte le fatture che scannerizzo di volta in volta.
io avrei bisogno di creare una macro che assegni l'ultimo file scannerizzato della cartella fatture alla cella che ho selezionato prima di attivare la macro.
In sostanza ho bisogno di dire alla macro che invece di creare il link con la fattura 0513 me lo crei con l'ultima fattura scannerizzata presente nella cartella che poi è quella con il numero progressivo più alto.
Spero di essere stato chiaro.
Ciao da Giuliano e grazie per l'attenzione

 

Risposta.

senti Giuliano, ti invio una routine che si basa su FoundFiles a cui con il metodo Excecute faccio cercare non l'ultimo nome di file, MA l'ultimo file modificato, (quindi creato) con estensione .Jpg. E' necessario costruire un ciclo per la ricerca in quanto FoundFiles restituisce un numero di indice che rappresenta il percorso completo del file. Poi, poichè Hiperlinks si applica ad un oggetto Range e non a Cells, dobbiamo prendere l'address della cella in quel momento attiva usando una variabile (io ho messo "cella") che verrà usata per definire il range; inoltre dopo l'indicazione di dove inserire l'hyperlinks è necessario indicare il percorso completo che mira al file da hyperlinkare, si usa un'altra variabile (la X in questo caso) come vettore per il percorso. Le altre istruzioni le dovresti capire, questa è la macro:

Sub cercaultimo()
Set fs = Application.FileSearch
With fs
.LookIn = "C:\Fatture"
.Filename = "*.jpg"
If .Execute(SortBy:=msoSortByLastModified, _
SortOrder:=msoSortOrderDescending) > 0 Then
For i = 1 To .FoundFiles.Count
cella = ActiveCell.Address
X = .FoundFiles(i)
With Worksheets(1)
'nome del foglio su cui stai con la cella attiva
.Hyperlinks.Add .Range(cella), X
End With
Exit For
'trovato il file ultima modifica si esce dal ciclo For Next
Next i
Else
MsgBox "Non esistono i file Cercati"
End If
End With
End Sub


Ovviamente prima di lanciare la macro, ricordati di selezionare la cella giusta.
Dovrebbe andarti bene, fammi sapere, ciao ennius
 

Replica di Giuliano.

Ti ringrazio della tua risposta, la proverò senz'altro.
Nel frattempo ho trovato una mia soluzione che è questa sotto, te la mando, magari può servire a qualcuno

Sub collegamento_ipertestuale()
' collegamento_ipertestuale Macro
'Con una macro del genere ottieni il nome dell'ultimo file.

Dim NomeFile As String, UltimoFile As String
NomeFile = Dir("C:\documents and settings\f4000\documenti\Fatture\")
UltimoFile = NomeFile
Do Until NomeFile = ""
If NomeFile > UltimoFile Then UltimoFile = NomeFile
NomeFile = Dir
Loop
'MsgBox (UltimoFile)
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=UltimoFile
End Sub

Ciao e grazie ancora
 

Risposta.

si, può andar bene anche la tua routine, solo che la tua cerca l'ultimo file presente nella cartella, indipendentemente dalla data di creazione o modifica, (che era la condizione da te richiesta) e visto che Windows ordina i file per nome, troveresti comunque ciò che cerchi se non dimentichi di salvare con numero progressivo. Comunque resto sorpreso dalla tua preparazione: se sei in grado di gestire queste routine mi chiedo perchè l'hai chiesto a me? Forse è meglio comunque se la riga sotto la completi con il tipo di file che cerchi, perchè così come me l'hai inviata darà un risultato nullo:
NomeFile = Dir("C:\documents and settings\f4000\documenti\Fatture\") - questa la tua riga, che restituisce vuoto
così invece ti trova l'ultimo file .jpg
NomeFile = Dir("C:\documents and settings\f4000\documenti\Fatture\*.jpg")
o così l'ultimo qualunque sia l'estensione:
NomeFile = Dir("C:\documents and settings\f4000\documenti\Fatture\*.*")
Presenterò volentieri la tua routine in un prossimo articolo che dedicherò all'argomento, citando ovviamente il tuo nome come autore.
saluti, grazie della collaborazione, ennius