Čože ??? To je blbina. PQ môže ťahať milióny riadkov. Nemôžete zverejniť tie súbory?
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim rClickRng As Range, novycmnt As String
Const SLOUPCE_RCLICK_COMMENT As String = "E:F"
Const PREDVOLENY_COMMENT As String = "Nazdar Fero !"
Set rClickRng = Intersect(Range(SLOUPCE_RCLICK_COMMENT), Target)
If Not rClickRng Is Nothing Then
With rClickRng.Cells(1)
If .Comment Is Nothing Then
novycmnt = InputBox("Vlož nový komentář:", , PREDVOLENY_COMMENT)
If Len(novycmnt) <> 0 Then .AddComment (novycmnt)
Else
novycmnt = InputBox("Přepiš původní komentář", , .Comment.Text)
If StrPtr(novycmnt) <> 0 Then
If Len(novycmnt) <> 0 Then
.Comment.Text Text:=novycmnt
Else
.Comment.Delete
End If
End If
End If
End With
Cancel = True
End If
End Sub
EDIT:
Kód sa vkladá do modulu daného listu!
Pridávam aj prílohu s popísaným makrom.
Podobné niečo som kedysi robil, a bolo to na palicu. A to bolo len z listu do listu. Toto je zo súboru do súboru. Viete koľko môže nastať problémov?
Kontrola súboru, či je otvorený, prípadne otvoriť, potom zatvoriť. A teraz tie veci na palicu. Ako zistiť, či bol riadok pridaný alebo vymazaný? Po zmene je označený celý riadok. Väčšinou. Teda je označený riadok vyplnený? Tak bol asi pred tým zmazaný riadok. Je prázdny? Tak bol asi pridaný riadok. Ale to platí iba pre odobranie pridanie. A čo ošetrenie, keď sa vloží kopírovaním? Vtedy je vyplnený aj okolné sú vyplnené a celý je označený. Ale to len v strede. Ak vložím na konci, alebo zmažem na konci dát? Čo ak vložím/zmažem viac riadkov? Treba uchovávať niekde počet riadkov. Ďalej k tomu "Väčšinou". Riadky môžete predsa pridať/odobrať aj vloženým/zmazaním a posunutím nadol/nahor. Vtedy ako zisťovať čo ste urobil? Môže proste nastať neskutočne veľa logických problémov pretože nebudete vedieť presný následok, ale budete chcieť zistiť jeho príčinu a vykonať reakciu.
Podľa mňa by bolo lepšie, aby ten druhý súbor odkazoval pomocou PowerQuery na tej prvý. "tabuľky" urobte ako "Tabuľky" - Ctrl+T. PQ sa aktualizuje po otvorení druhého zošitu, alebo klikom na Údaje - Obnoviť všetko, alebo Ctrl+Alt+F5. A budete mať v druhom zošite rovnaké dáta.
Ono by to šlo pekne vytiahnuť aj cez PQ (síce pomalšie ako to ADO). Ale zase narážam na to, ako zistiť cestu k zložke Data na OneDrive, ak tá zložka nebude synchronizovaná na disku. Nemám to ako skúšať, a prestáva ma baviť googlenie
Pozrite si ten riadok kódu, čo som napísal. Selection.Cells.Count čo tam mám je adekvátne k tomu čo píšete. Navyše treba rozlíšiť samotné zisťovanie označených+viditeľných. SpecialCells vracia nelogicky úplne niečo iné ak sú označené bunky, a ak je iba jedna. Vtedy vráti všetky viditeľné riadky, a tým pádom Intersect vráti aj neoznačené. Ten môj riadok kódu ošetruje všetko, dokonca aj situáciu ak bude označená bunka skrytá.
On Error Resume Next
Set Oznacene = Intersect(ActiveSheet.Columns("B"), IIf(Selection.Cells.Count = 1 And Selection.EntireRow.Hidden = False, Selection.EntireRow, Selection.SpecialCells(xlCellTypeVisible).EntireRow))
On Error GoTo 0
Ak by Vám to šlo, znamenalo by to, že máte synchronizovaný ten SP priečinok do Vášho OneDrive na Vašom disku. A teda makro ťahá dáta vlastne z Vášho disku ako z normálneho adresára. Tie Vaše XLS, nie sú skutočné XLS, ale textové súbory oddelené tabulátorom s príponou XLS namiesto TXT (toto robia automatizované systémy). Skúste túto metódu cez ADO, ktorá to spracováva ako textové súbory, a dáta si rozloží. Je to mnoho-mnoho-násobne rýchlejšie, ako otváranie súborov.
Ale ak to bude tak, že máte iba link na súbor s makrom na SP, a nemáte to nastavené na synchro na Váš disk, tak neviem, ako to poriešiť.
Na OneDrive Dir() nefunguje. Podľa stackoverflow by malo fungovať toto. Ale ak to dobre chápem, tak iba ak sú to Vaše súbory vo Vašom OneDrive na PC, teda sa ukladajú do Vášho OneDrive adresára na Vašom PC.
Problém s OneDrive je ten, že tie súbory tam reálne na Vašom PC niesú až pokým ich nepoužijete. A ani sa Vám nezobrazia (zoznam), pokiaľ neprebehne aktualizácia. Nemám zatiaľ ako preveriť.
Môže to byť ale aj tak, že máte na sieti zdieľané súbory (nie Vaše na Vašom OneDrive), Vy máte iba zdieľací link, ktorý otvárate. To táto metóda fachať nebude, páč to hľadá súbory vo Vašom OneDrive na disku, kde ale nie sú. Takú adresu ako Vám to tam píše, totiž dostanem v tomto prípade - teda link.
To budem musieť na pokus doma zriadiť 2x MS konto, na 2 PC OneDrive, 1 zdieľací, 1 klient, prihlásiť na oboch OneDrive aj Office do MS kont. A potom sa toho zbaviť. No to neviem, či sa mi bude chcieť.
EDIT:
SharePoint je samostatne platený, tak neskúsim. Ale malo by ísť nalinkovať spoločný SP link do Vášho OneDrive. Možno to tak aj máte. Skúste len tú cestu zmeniť
Cesta = Environ("OneDrive") & "\" & Replace(Split(ThisWorkbook.Path, "/", 5)(4), "/", "\") & "\Data\"
Makro som robil určite ja.
2. Nič také makro nerobí. Rovno pri nájdení každého súboru, napíše jeho meno, a hneď natiahne z neho data. Teda nerobí najskôr zoznam súborov. Ale to je len "technikália".
3. Znovu technikália - tak to makro nepracuje. Žiadne určité poradie nemá stanovené. Berie súbory do radu tak ako ich nachádza v adresári.
"Při znovu oprášení souboru už nefungují cesty" - ??? Čo znamená oprášení? Aké cesty?
"nakoplé" - z čoho tak usudzujete?
Ja makro spustím a normálne dobehne, data natiahne, chybu nehodí... Ani keď ho spustím, ani keď ho krokujem.
Vám to hodí chybu? Na ktorom riadku? Nenatiahne údaje? Ktoré? Nesprávne vyhodnotí? Čo?
Napr. všetky obrázky odkážte na makro
Sub Click()
On Error GoTo CHYBA
ThisWorkbook.FollowHyperlink Address:=ThisWorkbook.ActiveSheet.Shapes(Application.Caller).TopLeftCell.Value
Exit Sub
CHYBA:
MsgBox "Chyba", vbExclamation
End Sub
a bude sa otvárať tá stránka, čo je zapísaná v bunke pod ľavým horným rohom obrázku. Alebo obrázkom nastaviť normálne prepojenie, upresnite na ukážke.
No ja som predpokladal, že je tak nejak logické, aby aj sám súbor o sebe dal vedieť pri otvorení. Preto je aj tam obdobné makro. Ak to je nežiadúce, potom ho odstráňte, aj modul aj Workbook_Open, a súbor môže byť *.XLSX, a nie .*XLSM (treba názov súboru adekvátne zmeniť v šablóne).
Makrá vždy skúšajte na kópii dôležitých dát, aj keď toto nerobí s dátami absolútne nič. Pre istotu, lebo makro môže spadnúť, a zobrať so sebou neuložené údaje. No pri tomto by sa to stať nemalo, je to skoro celé v On Error.
Pozrite si aj stručný popis kódu. Ak niečomu nerozumiete, vysvetlím na čo to je.
Tak skúste. Najskôr treba nastaviť v šablónovom makre cestu k súboru výcvikov a jeho meno. Šablónu pre úpravy otvárajte v už otvorenom Exceli cez Súbor Otvoriť ..., lebo normálnym dvojklikom sa neotvorí ale vyvolá. Makro vo výcviku je trošku zmenené/jednoduchšie. Prípadne sa pýtajte.
Ja som z toho úplne dopletený. Tie dátumy DT+OPCH sú uložené a dopĺňané kde? V šablóne asi ťažko. Tá šablóna je "šablóna" *.xlsx/*.xlsm, alebo skutočná šablóna *.xltx/*.xltm ? Každá pracovná zmena si otvorí novú čistú šablónu? Ak by bol ten list "Výcvik" s editovateľnými DT+OPCH súčasťou doteraz nespomenutého zošitu, a jednalo by sa iba o riešenie správania na jednom PC, tak by sa asi dal použiť súbor osobných makier PERSONAL.XLSB. To čo Vy každú prac. zmenu uložíte má príponu akú, *.xlsm alebo *.xlsx?
Proste nerozumiem ako je čo s čím zviazané a ako funguje a má fungovať. Skúste to popísať inak.
Napr.
Na to bude ale potrebný ActiveX ComboBox
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.