< návrat zpět

MS Excel


Téma: Hyperlink - vba rss

Zaslal/a 6.3.2020 11:35

Dobrý den všem,

mohl bych poprosit o pomoc? Připravil jsem si konsolidační makro, které mi dává dohromady informace o zaměstnancích a které mi bere podle předchozího zadání uživatelů textové z různých souborů na různých místech na interní síti. Konsolidovaná data jsou pouze na jednom listu a výběr souborů řeším přes makro, které mi funguje..
Narazil jsem ale na problém, kdy finální uživatel toho mého konsolidovaného souboru by chtěl případně-pokud u některých zaměstnanců najde nějaké informace, které budou nutné dál ověřit, jednoduchým klikem na hyperlink otevřít ten původní zdrojový soubor a i ten původní zdrojový list = já mám na mém souhrnném listu pomocí toho makra dotažené informace o umístění souboru (sloupec Q), konkrétním listu pracovníka (sloupec M) a i název-jméno, jak bych potřeboval, aby se hyperlink zobrazoval…ale bohužel se mi tohle nedaří zakomponovat do makra - jsem začátečník a hyperlink ve vba je pro mě moc..
Soubor je v příloze
Budu rád za jakoukoliv pomoc :)
Předem díky
Pavel

Příloha: xlsx46145_ukazka.xlsx (22kB, staženo 19x)
Zaslat odpověď >

#046147
elninoslov
Sub HL()
Dim Cesta As String, Bunka As String
With Worksheets("Souhrn")
Cesta = Replace(Replace(.Range("Q2").Value, "[", ""), "]", "")
Bunka = Replace(Replace(.Range("O2").Value, "[", ""), "]", "")
.Range("N2").Hyperlinks.Add Anchor:=.Range("N2"), Address:=Cesta, SubAddress:=Bunka, TextToDisplay:="Link"
End With
End Sub

Toto je len ukážka. Rovno v tom makre čo máte, počítajte pozíciu bunky (asi cyklom alebo neviem ako to máte) v .Cells() a vkladajte.citovat
#046148
avatar
Pokusil jsem se o to, ale nejde mi to - myslíte, že byste mohl kouknout na celé to makro, které mám a případně mi to tam doplnit?
ještě jednou díky moc za pomoc..
Pavel

Sub RunBut_Click()
Dim SourceBook As Workbook
Dim TargetSheet As Worksheet
Dim SRow, TRow, TargetNameRow, SheetIndex As Integer
Dim FromDate, ActDate As Date
Dim Company As String
Dim Correct As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Set TargetSheet = Sheets("Souhrn")
FromDate = Cells(2, 3)

TargetSheet.Activate
TRow = 2
While Not IsEmpty(TargetSheet.Cells(TRow, 1))
TargetSheet.Rows(TRow).Clear
TRow = TRow + 1
Wend

TargetNameRow = 2
TRow = 2

While Not IsEmpty(Cells(TargetNameRow, 1))
Company = Cells(TargetNameRow, 2)
Correct = Cells(TargetNameRow, 4)
Workbooks.Open Cells(TargetNameRow, 1), UpdateLinks:=False, ReadOnly:=True
Set SourceBook = Application.ActiveWorkbook
For SheetIndex = 1 To SourceBook.Sheets.Count

SRow = 4
While Not IsEmpty(SourceBook.Sheets(SheetIndex).Cells(SRow, 1))

If ActDate >= FromDate And SourceBook.Sheets(SheetIndex).Cells(SRow, 11) <> 0 Then
SourceBook.Sheets(SheetIndex).Activate
ActiveSheet.Rows(SRow).Copy
TargetSheet.Activate
ActiveSheet.Rows(TRow).PasteSpecial Paste:=xlPasteValues
ActiveSheet.Rows(TRow).PasteSpecial Paste:=xlPasteFormats
ActiveSheet.Cells(TRow, 16).Value = Company
ActiveSheet.Cells(TRow, 17).Value = Correct

TRow = TRow + 1
End If
SRow = SRow + 1
Wend
Next SheetIndex

Application.DisplayAlerts = False
SourceBook.Close
Application.DisplayAlerts = True

TargetNameRow = TargetNameRow + 1
Wend

TargetSheet.Cells(2, 1).Select

Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox ("Hotovo!!")
End Subcitovat
#046157
elninoslov
To Vaše makro nieje vhodne urobené. Ide bunku po bunke, teda pomaly. Keďže nemám súbory, tak som sa len pokúsil uhádnuť, čo v tom makre robíte, a prerobiť to, aspoň z časti na čo najviac hromadných vecí, aby to bolo rýchlejšie (oblasti, polia). Každopádne to skúste VÝHRADNE NA KÓPII DÁT! Naozaj potrebujete kopírovať formáty buniek ? Pretože ak sú dáta rovnakého typu vo všetkých stĺpcoch a v celých stĺpcoch, tak sa formáty nemusia kopírovať, ale predformátuje sa ten stĺpec. Z toho vyplýva, že by sa mohlo vynechať pomalé kopírovanie, a urobiť to celé cez rýchle polia. A najlepšie by asi bolo, aby dáta vydolovalo PowerQuery. Tam by ale bolo asi potrebné urobiť v PowerQuery cyklus, a v tom M-code nie som zatiaľ taký zbehlý. Bude ale potrebné priložiť nejaké zdrojové ukážkové súbory.
Vyskúšajte.
Příloha: zip46157_suhrn-zo-suborov.zip (37kB, staženo 22x)
citovat
#046170
avatar
Dobrý den,

jak jsem psal - jsem spíš začátečník, takže jsem se snažil to udělat tak, aby to fungovalo - bez ohledu na rychlost :)
- cílem je, aby to následně fungovalo pod správou lidí, kteří nemají s excelem (a s vba už vůbec ne) moc velké zkušenosti, takže asi spíš makro než power query.
Jinak jak jste psal, že nemáte k dispozici soubory, tak všechny ty primární soubory budou mít +/- stejnou strukturu - každý soubor bude obsahovat list Souhrn, který je nejdůležitější a list souhrn bude mít vždy stejnou strukturu. Protože ale ještě nevim určitě, jestli některý z těch sloupců nebude obsahovat datum, tak jsem tam dal kopírování formátů buněk..zkusil jsem pustit to makro, které jste poslal a bohužel mi to spadlo - konkrétně na řádku "S = .Cells(4, 1).Resize(SRow, 15).Value 'Načítanie hodnôt zo zdrojového listu".
Myslíte, že byste na to mohl ještě kouknout, jestli tam není nějaká chyba? Bez ohledu na to, kolik souborů si vyberu na listu štart, tak makro mi padá...
Ještě jednou díky
Pavelcitovat
#046201
elninoslov
Ale veď to je spôsobené tým, že nemám tie Vaše súbory. Ako mám vedieť ktorý stĺpec použiť na zistenie počtu riadkov, na ktorom riadku začínajú údaje, je/nieje tam hlavička, atď. Predpokladám, že chyba je v tom, že v zdrojových súboroch nezačínajú dáta na 4 riadku, ako som vyčítal z Vašeho kódu
...
SRow = 4
...

s premenná SRow má zápornú alebo 0 hodnotu. Keď Vám to dá chybu, choďte na premennú kurzorom, vypíše hodnotu. Tá jest ?

Dodajte reálny súbor (citlivé dáta zmente), a keď bude čas, urobím to bez kopírovania, cez pole do predformátovanej oblasti. Teda dúfam, že ten dátum bude stále iba v jednom stĺpci. Či?citovat
#046202
avatar
Dobrý den,

máte pravdu - omluva :). všechny zdrojové soubory budou obsahovat list souhrn (viz.příloha) a obsažená data budou začínat na řádku 4.
Soubor, který bude data konsolidovat by měl mít hlavičku na řádku 1 a strukturu listu stejnou..
díky
Pavel
Příloha: zip46202_consolidacezdroj.zip (60kB, staženo 15x)
citovat
#046205
elninoslov
Čo je to ActDate? Nikde premennú nenapĺňate. Čo je FromDate? Bunka C2 (Cells(2, 3)) na liste Zadání je prázdna.

EDIT: Inak ja to makro iba prekopírujem do Vašeho súboru, zmením názov listu Štart na Zadání a makro fičí. Podľa času to ale aj tak prerobím na pole.citovat
#046206
avatar
Dobrý den,

Skvělé :-) ..AcDate a FromDate je vlastně už ted zbytečné...myslel jsem,že bude hrát nějakou roli zohlednění konkrétního data, ke kterému soubory konsoliduju, ale dozvěděl jsem se, že to nebude potřeba, takže to můžete klidně odstranit...
díky

Pavelcitovat
#046229
elninoslov
Skúste toto. Upravil som podmienený formát (to si nastavte), zjednotil Browse tlačítka, upravil makro, ale teraz Vám zase na vzorovom súbore nesedia tie adresy buniek, na ktoré má hyperlink odkazovať. V tabuľke máte iné názvy listov ako "Souhrn", ktorý tvrdíte, že tam bude, a z ktorého sa majú ťahať data. Nerozumiem Vám presne... 7
Příloha: zip46229_consolidace_v2.zip (39kB, staženo 19x)
citovat
#046255
avatar
Dobrý den,
funguje to krásně - díky moc..
Můžu poprosit ještě o radu/tip - mohl byste mi doporučit nějakou knihu/učebnici o programování vba? Něco sice vím, ale stejně :)
Ještě jednou díky a kdybych se Vám mohl nějak revanšovat, tak stačí říct
P.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje