Discussion:
pytanie o Makro Excel hiperłącze ???
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
TTTomek
19 lat temu
Permalink
Witam

Mam takie makro:

Sub Hiperlacza()

Dim I As Long

I = 2

Do While Cells(I, "A") <> ""
ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:=CurDir & "\" & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"
I = I + 1
Loop

End Sub

Makro miało działać na wszystkich komputerach w firmie ale nie
działa, a właściwie czasem działa a czasem nie.

Po najechaniu na hiperłącze widzę że czasami odwołuje się do
złego katalogu i pliku.

Czy można to jakoś usprawnić.

Z góry pisze że makra nie pisałem ja , tylko dzięki pomocy innej
osoby.

Drobne wyjaśnienie:
Makro ma działać w ten sposób że po odnalezieniu nazwy pliku w
pierwszej kolumnie excela i po znalezieniu pliku o takiej nazwie
wstawia hiperłącze w kolumnie "i" odwołujące się do pliku.
Jest tego dużo około 3000 plików ze skanami, na razie, a będzie
więcej.

pozdrowienia

Tomek
Tajan
19 lat temu
Permalink
Witam!
...
Nie widzę kodu ustawiająca sciezke biezącą (CurDir). W ten sposób, w momencie uruchomienia makra, na róznych komputerach
moze byc ona roznie ustawiona.

Jezeli pliki znajdują sie w folderze skoroszytu, zamiast CurDir, podaj sciezkę skoroszytu:

ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:=ThisWorkbook.Path & "\" & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"

Jezeli jest to jakaś inna scieżka, to należy ją wcześniej ustawić z pomocą polecenia ChDir, np.:




Sub Hiperlacza()

Dim I As Long

I = 2
'*
ChDir "C:\Moj folder z plikami"
'*
Do While Cells(I, "A") <> ""
ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:=CurDir & "\" & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"
I = I + 1
Loop

End Sub

Ponadto, w procedurze brak jest kodu sprawdzającego fakt istnienia danego pliku w danyym folderze.

Tajan
TTTomek
19 lat temu
Permalink
plik excela z bazą danych oraz pliki skanów znajdują sie w tym
samy katalogu.
Katalog z plikami jest na innym komputerze od kolegi z pracy,Partycja
D, mamy dostęp do tego katalogu przez otoczenie sieciowe.

Czy mogę prosić o napisanie przykładowej ścieżki, chodzi mi o
sposób wpisania , czyli mogą być dyski i katalogi wymyślone , to na
tej podstawie może mi się uda to zmienić w pracy.
U mnie to wygląda tak:
otoczenie sieciowe\handel2\d\ATESTY\ tu są pliki
Nie wiem czy poprawnie to wpisałem , ewentualnie jak można sprawdzić
całą ścieżkę w komputerze ?

Co do sprawdzenia czy jest dany plik w danym folderze to nie wiem jak
to zrobić .

Ale najważniejsze jest dla mnie , żeby choć otwierał te pliki ,
które są.
Tajan
19 lat temu
Permalink
...
Czyli rozumiem, że plik otwierasz z lokalizacji sieciowej ?
W tym przypadku nazwę sciezki powinieneś podać uzywajac tzw. nazwy UNC, czyli: \\nazwa_komputera\nazwa_udzialu\folder.
Do tego celu mozesz do tego celu wykorzystać własciwośc Path, która poda Ci, w tym przypadku, taką sciezke. Czyli, tak
jak pisalem, hiperlinki dodawaj tak:

ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:=ThisWorkbook.Path & "\" & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"

Tajan
TTTomek
19 lat temu
Permalink
...
Makro teraz wygląda tak:

Sub HiperlaczaAtestyD()

Dim I As Long

I = 2 ' plik excela bazy danych i skany atestów muszą być zapisane w
tym samym
'katalogu
ChDir "\\HANDEL2\D\ATESTY"
Do While Cells(I, "A") <> ""
ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:=ThisWorkbook.Path & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"
I = I + 1
Loop

End Sub

Dalej coś nie tak , makro linki wstawia ale odwołanie w linku jest
złe.
Gdy zaznaczam myszką link to widzę taki adres (dosłownie to co
widzę) :
file:///C:\WINDOWS\Dana Aplikacji\Microsoft\Excel\XLSTARTplikMój

widać że znów chyba odwołuje się do dysku C


Tomek
Tajan
19 lat temu
Permalink
Witam!
Post by TTTomek
Dalej coś nie tak , makro linki wstawia ale odwołanie w linku jest
złe.
Gdy zaznaczam myszką link to widzę taki adres (dosłownie to co
file:///C:\WINDOWS\Dana Aplikacji\Microsoft\Excel\XLSTARTplikMój
widać że znów chyba odwołuje się do dysku C
Sorry, ale się nie rozumiemy. Moje makro bazowało na założeniu, że aktywny skoroszyt, do którego makro ma zapisać dane,
znajduje się na komputerze zdalnym: "Handel2", natomiast z linku wynika, ze w rzeczywistości jest on na dysku lokalnym, w
folderze autostartu Excela.

W takim razie sprawdz, jak zadziała takie makro:

Sub HiperlaczaAtestyD()

Dim I As Long

I = 2 ' plik excela bazy danych i skany atestów muszą być zapisane w
tym samym
'katalogu
ChDir "\\HANDEL2\D\ATESTY"
Do While Cells(I, "A") <> ""
ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:= CurDir & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"
I = I + 1
Loop

End Sub

Tajan
TTTomek
19 lat temu
Permalink
...
Musiałem zrobić małą przeróbkę
zamiast:
Address:= CurDir & Cells(I, 1).Value & ".tif", _

to:
Address:= CurDir & "\" & Cells(I, 1).Value & ".tif", _

przeróbka była konieczna bo zlepiało mi katalog z plikiem i
pokazywało błąd , pokazywało dziwną nazwę pliku złożoną z
nazwy katalogu i pliku.

Umnie na kompie już działa , zaraz po przegrywam makra na inne
komputery w firmie i zobaczę.

Na razie bardzo dziękuje za cierpliwość

Tomek
TTTomek
19 lat temu
Permalink
Witam

Niestety znów mi się linki odwołują do mojego komputera a nie do
komputera kolegi .
No i makre znów nie działa.
Wczoraj działało , dzisiaj na nowo załączyłem komputer i nic z
tego.
Czyli tak jak było kiedyś , czasami działalo a czasami nie.

Czy jest na to jakiś pomysł , żeby temu zaradzić ????


Tomek
Tajan
19 lat temu
Permalink
Witam!
Post by TTTomek
Witam
Niestety znów mi się linki odwołują do mojego komputera a nie do
komputera kolegi .
No i makre znów nie działa.
Wczoraj działało , dzisiaj na nowo załączyłem komputer i nic z
tego.
Czyli tak jak było kiedyś , czasami działalo a czasami nie.
Czy jest na to jakiś pomysł , żeby temu zaradzić ????
No to może rozwiązanie najprostsze. Wpisać scieżkę "na sztywno" ? Np. tak:

Sub HiperlaczaAtestyD()

Dim I As Long

I = 2
Do While Cells(I, "A") <> ""
ActiveSheet.Hyperlinks.Add Anchor:=Cells(I, "I"), _
Address:="\\HANDEL2\D\ATESTY\" & Cells(I, 1).Value & ".tif", _
TextToDisplay:=Cells(I, 1).Value & ".tif"
I = I + 1
Loop

End Sub

Tajan
TTTomek
19 lat temu
Permalink
jak wychodzi³em z pracy to dzia³a³o dobrze po zmianie w makrze..
Zobaczê jutro jak wszyscy na nowo w³±czymy komputery.

Oby siê uda³o.

oczywi¶cie bardzo dziêkuje za pomoc

Tomek
TTTomek
19 lat temu
Permalink
Już jest jutro i wszystko działa !!!!

dzięki bardzo bardzo bardzo !!!

Tomek

Loading...