|
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
|