Prohledavani v .doc files   otázka

VB6/VBA

Dobry den, chtel bych poradit zkusenejsi programatory o radu. Chtel bych si vytvorit program, ktery bude v doc souboru hledat urcity retezec a ten potom ulozit do noveho doc souboru. Jaka je podle Vas nejlepsi metoda. Diky moc

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No řekl bych,že Vám nezbyde nic jiného než si daný soubor otevřít,přečíst a daný string následně uložit do souboru nového.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problem, je ze ten soubor ma pres 100Mb, skusim to ale bude to asi na dlouho. A co to vyresit nejakym makrem nebo necim jinym?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prohledávat binární soubor, pokud přesně neznáte jeho formát, je totální hovadina. Nedělejte to.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ja znam jeho format, je to dejme tomu seznam jmen, ktery ja potrebuji prohledat a ulozit napriklad jenom pet urcitych jmen

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ne, neznáte jeho formát. Podle vaší odpovědi pravděpodobně ani nevíte, jaký je rozdíl mezi textovým a binárním souborem, a už vůbec ne to, že text může být ve dvoubajtovém Unicode kódování (které VB6 nepodporuje).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dotyčný mal pravdepodobne na mysli to, ako je ten dokument naformátovaný vo Worde. Vy máte na mysli formát súboru. To sú dve rôzne veci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

DOC se otevřít dá - buď přes COM otevřít Word na pozadí a rozparsovat si dokument (přečíst si ho po odstavcích a vybrat si z něj, co potřebujete).

Druhá možnost je použít nějakou knihovnu, která ho umí číst bez závislosti na Wordu (pro XLS existuje NPOI, třeba bude i něco pro Word).

Třetí možnost je využít COM rozhraní IFilter, které je ve Windows kvůli vyhledávání. Umí vytáhnout text z různých formátů (txt, HTML, doc, ppt, po doinstalaci i pdf atd.). To je použitelné, pokud vám stačí jen vyčíst text a neřešíte jeho formátování.

Možností je zkrátka několik, ale záleží, co přesně potřebujete.

Pokud ale z toho ještě chcete skládat druhý doc dokument, použil bych tu první možnost.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Diky moc, prvni varianta zni asi pro me nejlepe. Mohl by jste mi napsat nejaky kraticky navod, jak by jste postupovat vy? Potrebuju si nacist dokument a z neho vybrat napriklad pet stranek, ktere obsahuji urcite slovo. A tech pet stranek automaticky zkopirovat a ulozit do noveho dokumentu. Diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ako pracovať s dokumentmi Wordu je v tomto článku: http://www.vbnet.cz/clanek--53-prace_s_d... . Nie je to presne to, čo potrebujete, ale na začiatok by to mohlo stačiť. Skúste sa trochu pohrabať v knižniciach Wordu, ktoré používa ten článok, možno Vám dôjde, ako by sa čo dalo urobiť.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hop, ale toto je pre VB.NET.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

tak jsem se do toho pustil a asi nejlepsi bude vytvorit na to makro, ktere prohleda vsechny stranky a ty ktere budou obsahovat zadany retezec (Prijmeni), a pak vybrane stranky ulozi do noveho textoveho dokumentu. Vyhledavani funguje v pohode ale ted nemuzu prijit na to jak vybrat celou stranku. Neporadite?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podľa mňa by bolo najlepšie vedieť VB.NET alebo C#, a spraviť si to pomocou knižníc Wordu. Ale ak neviete žiaden s .NET jazykov, tak Vám potrvá, kým sa nejaký naučíte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Umim bohuzel jenom Visual Basic, chtel bych to udelat tim makrem, tak se uvidi jestli se to povede. Akorat jsem porad zasekly na tom, ze nevim jak "oznacit" celou stranku kde je hledany retezec

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste následující kód:

Sub NajdiTextVyberStranu()
  Dim CisloStrany As Variant
  Selection.Find.ClearFormatting
  With Selection.Find
    .Text = "Hledaný text"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
   .MatchAllWordForms = False
  End With
  Selection.Find.Execute
  
  CisloStrany = Selection.Information(wdActiveEndPageNumber)
  Selection.GoTo What:=wdGoToPage, Which:=wdGoToRelative, _
     Name:=CisloStrany
  Selection.MoveDown Unit:=wdWindow, Count:=1, Extend:=wdExtend
End Sub

V parametry hledání si zadejte svůj text. Kdyby se nevybírala celá stránka, ale jen viditelná část, zmenšete měřítko zobrazení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback