< návrat zpět

MS Excel


Téma: VBA import komentára rss

Zaslal/a 13.1.2019 9:43

Zdravím,
Mám tu výzvu, na ktorú neviem nájsť odpoveď. Je možné (cez VBA) importovať komentár z bunky z iného zošita do aktívneho zošita (do bunky) bez otvorenia zdroja (MS Excel 2016)?
Cez funkciu GetValue viem získať hodnotu, ale komentár.. 7
Hypertextové prepojenia nie je možné použiť, ani otv. zošita zdoja (ani na pozadí). Na iných fórach som nenašiel odpoveď, stretol sa s takýmto niekto? Už dopredu ďakujem za akýkoľvek podnet, nápad.
Function GetValue(fPath As String, fFile As String, fWsh As String, fRw As Long, fClmn As Integer) As Variant
Dim xlApp As New Excel.Application, fString As String
fString = "'" & fPath & "\[" & fFile & "]" & fWsh & "'!R" & fRw & "C" & fClmn
GetValue = xlApp.ExecuteExcel4Macro(fString)
End Function

Zaslat odpověď >

#042430
avatar
GET.NOTE
Returns characters from a comment.
Syntax
GET.NOTE(cell_ref, start_char, num_chars)
Cell_ref is the cell to which the note is attached. If cell_ref is omitted, the comment attached
to the active cell is returned.
Start_char is the number of the first character in the comment to return. If start_char is
omitted, it is assumed to be 1, the first character in the comment.
Num_chars is the number of characters to return. Num_chars must be less than or equal to
255. If num_chars is omitted, it is assumed to be the length of the comment attached to
cell_ref.
Examples
The following macro formula returns the first 200 characters in the comment attached to cell
A3 on the active sheet:
GET.NOTE(!$A$3, 1, 200)
In Microsoft Excel for Windows, the following macro formula returns the 10th through the 39th
characters of the comment attached to cell C2 on SALES.XLS:
GET.NOTE("[SALES.XLS]Sheet1!R2C3", 10, 30)
224
In Microsoft Excel for the Macintosh, the following macro formula returns the 10th through the
39th characters of the comment attached to cell C2 on SALES:
GET.NOTE("[SALES]Sheet1!R2C3", 10, 30)
Use GET.NOTE with the NOTE function to move the contents of a comment to a cell or text box
or to another comment attached to a cell:
NOTE(GET.NOTE(!$B$10),ACTIVE.CELL())
Related Functions
GET.CELL Returns information about the specified cell
NOTE Creates or changes a comment.

Nezkoušel jsem, snad bude k užitku, uvidíte, zkuste.
Zdroj:
https://d13ot9o61jdzpp.cloudfront.net/files/Excel%204.0%20Macro%20Functions%20Reference.pdfcitovat
#042432
elninoslov
Ale to sa asi nedá použiť na zatvorený súbor. Ak je súbor otvorený, poznáme meno listu a adresu bunky, tak to funguje takto:
txt = ExecuteExcel4Macro("GET.NOTE(""[pok2.xlsm]Hárok1!R2C2"")")

Keďže sa súbor nesmie otvoriť, môže sa rozzipovať ? Ak áno, tak:
-skopírovať súbor do tempu, premenovať na *.zip, rozbaliť (všetko vo VBA samozrejme)
-ak súbor obsahuje komentáre, tak v podzložke "xl" budú súbory "comments1.xml", "comments2.xml",...
-z nich sa dá vyčítať autor, bunka, text a formát textu
-v podzložke xl\worksheets\_rels\ je v každom sheetXY.xml ... uvedený názov "commentsXY.xml" ktorý mu patrí. V listoch v ktorých niesú komenty, tento odkaz nieje.
-všetko parsovať buď klasicky cez text alebo cez Nodes v Microsoft.XMLDOM.
-na záver by sa extrahovaná zložka aj kópia súboru mázli.citovat
#042440
Stalker
Sorry, že se do toho montuju. Jen tak ze zvědavosti, proč se zdrojový soubor nesmí otevřít?
Pokud ho otevřu na pozadí (GetObject) tak uživatel o tom nemá ani páru.citovat
#042456
avatar
Jak mohu získat nějakou hodnotu ze souboru bez jeho otevření?

Napadly mne varianty:

Zkopíruji a otevřu kopii (Neodporuje to zadání? Pokud ne zkopírujte soubor a otevřete kopii.)

Zeptám se někoho jiného. Použiji nějakou funkci, která soubor otevře na pozadí (Vyloučeno v zadání, snad to má nějaký racionální důvod.).citovat
#042467
avatar
Netušil jsen, že GET.NOTE nebude fungovat na zavřený sešit, dokonce jsem to zkoušel a nepodařilo se mi to rozchodit.

Není známo, jak dokonalé to má být, protože ohledně komentáře těch věcí bude možná potřeba víc, nejen text, ale taky uživatel, odřádkování, formát textu, tvaru, pozice...

Nastavíte-li makro před uložením zdrojového sešitu s komentáři.
Vyhledáte-li pomocí makra vždy před uložením komentáře, mohlo by pomoct SpecialCells(xlCellTypeComments) na žádaném listu či listech.
Uložíte-li si potřebné vlastnosti (adresa, autor, text...) do tabulky v listu či chcete-li souboru.
Získáte-li tyto vlastnosti v cílovém sešitu pomocí výše uvedeného makra ze zavřeného sešitu nebo zpracujete-li připravený vlastní soubor, pak na jejich základě vytvoříte požadované kopie komentářů.

Slabinou je doplní-li uživatel komentáře a uloží-li sešit s nepovolenými makry nebo typ zdrojového sešitu není uvažován s makry, pak je vítězem návod s rozbalením kopie a rabováním vlastností z xml souboru, jak bylo doporučeno výše nebo se smířit s otevřením souboru či jeho kopie ve skryté instanci.citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura III

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

Aktivní diskuse

VBA macro export PDF to mail

Palooo • 22.8. 11:38

Ohromný nárust va velikosti souboru

zabudnuteheslo • 22.8. 6:52

Ohromný nárust va velikosti souboru

nosekpav • 21.8. 10:38

VBA macro kopírovanie oblasti

elninoslov • 21.8. 0:23

VBA macro kopírovanie oblasti

marjankaj • 20.8. 22:23

VBA macro kopírovanie oblasti

Anonym • 20.8. 18:45

Denní plán směn - poslední úpravy

pk-wall • 20.8. 9:35