Ahojky,
pro vás to bude jednoduché, pro mě je to hlavolam.
Mám adresář, ve kterém jsou soubory ve wordu. A chtěla bych, aby se ve všech těchto souborech hledal text např: "Node...:" a pokud v souboru najde tento text, aby mi do jednoho (nově vytvořeného) souboru zkopíroval hledaný text a cca 200 znaků za ním. V souboru může být i 50 těchto řetězců, ale nemusí být ani jeden.
Můj první pokus byl, že jsem sloučila všechny soubory do jednoho a v něm jsem chtěla hledat, ale bohužel mi to napsalo, že soubor překročil povolený počet stran.
Za jakýkoliv návrh děkuji
Automatické zkopírování od určitého řetězce Vyřešeno
-
- Level 1
- Příspěvky: 90
- Registrován: září 11
- Pohlaví:
- Stav:
Offline
- ITCrowd
- Tvůrce článků
-
Guru Level 13.5
- Příspěvky: 23605
- Registrován: březen 10
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
Jak moc na to spěcháš? Můžu zkusit vytvořit skript ve vbs, ale nebude to hned. Výsledný soubor má být také ve wordu?
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
-
- Level 1
- Příspěvky: 90
- Registrován: září 11
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
Děkuji moc...
já na to nespěchám... spěchají jen všichni kolem mě
co se týká výsledného souboru, tak nechám na tobě, co se ti nejvíce hodí... (ale asi ne excel, protože v kopírovaném řetězci budou znaky odstavců a to by v excelu mohlo dělat problémy).
jinak počítám s tím, že cestu k adresáři i hledaný text si budu upravovat přímo v makru. Tak ani to není nutné zvlášť upravovat.
já na to nespěchám... spěchají jen všichni kolem mě
co se týká výsledného souboru, tak nechám na tobě, co se ti nejvíce hodí... (ale asi ne excel, protože v kopírovaném řetězci budou znaky odstavců a to by v excelu mohlo dělat problémy).
jinak počítám s tím, že cestu k adresáři i hledaný text si budu upravovat přímo v makru. Tak ani to není nutné zvlášť upravovat.
- ITCrowd
- Tvůrce článků
-
Guru Level 13.5
- Příspěvky: 23605
- Registrován: březen 10
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
OK. Pustím se do toho.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
- ITCrowd
- Tvůrce článků
-
Guru Level 13.5
- Příspěvky: 23605
- Registrován: březen 10
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
Ahoj,
tak předkládám výsledek.
Má to několik komplikací.
1. nepovedlo se mi přijít na způsob, jak najít text. Skript tedy prohledává wordovské soubory na přítomnost slova. Celý text wordu tedy srovnává po slovech, takže nelze k vyhledání použít např. větu. Hledané slovo lze zvolit v položce Const najdi = "počítač" (hledané slovo počítač je v uvozovkách).
2. nelze zadat počet znaků. Nicméně lze zvolit počet slov za nalezeným slovem. Const nasled = 3 (zapíše hledané slovo + 3 následující slova)
3. cestu ke složce s umístěnými soubory lze zadat v Const slozka = "C:\test" (cesta je uvedena včetně písmena disku v uvozovkách. Musí být bez mezer!
4. skript vytvoří soubor vysledek.doc Jméno výsledného souboru lze změnit v objDoc.SaveAs("C:\test\vysledek.doc") (jméno souboru i s cestou v uvozovkách. Adresář (zde test) musí existovat a nesmí v jeho názvu být mezera.
5. Ve složce musí být pouze dokumenty wordu, jinak skript skončí chybou.
6. Jednotlivé nálezy jsou odděleny mezerou (5x odentrovány)
7. Pokud je hledané slovo i v těch dalších (zde třech) je ignorováno
8. Prohledávání dost dlouho trvá. Ukončení práce skript oznámí oznámením "Skript ukončil práci" (okno Wscript host).
Postup:
Uvedený text v Code si označ a zkopíruj Ctrl+C. Otevři notepad (poznámkový blok) a vlož Ctrl+V. Ulož s příponou .vbs. (Nebo ulož jako text a pak třeba v totalcommanderu přejmenuj). Nepoužívat textové editory jako word, wordpad a podobně!!!. V notepadu si můžeš rovnou zeditovat potřebné vlastnosti (cestu, hledané slovo, výsledný soubor, počet slov za hledaným slovem).
Soubor spustíš poklepáním na ikonu souboru.
tak předkládám výsledek.
Má to několik komplikací.
1. nepovedlo se mi přijít na způsob, jak najít text. Skript tedy prohledává wordovské soubory na přítomnost slova. Celý text wordu tedy srovnává po slovech, takže nelze k vyhledání použít např. větu. Hledané slovo lze zvolit v položce Const najdi = "počítač" (hledané slovo počítač je v uvozovkách).
2. nelze zadat počet znaků. Nicméně lze zvolit počet slov za nalezeným slovem. Const nasled = 3 (zapíše hledané slovo + 3 následující slova)
3. cestu ke složce s umístěnými soubory lze zadat v Const slozka = "C:\test" (cesta je uvedena včetně písmena disku v uvozovkách. Musí být bez mezer!
4. skript vytvoří soubor vysledek.doc Jméno výsledného souboru lze změnit v objDoc.SaveAs("C:\test\vysledek.doc") (jméno souboru i s cestou v uvozovkách. Adresář (zde test) musí existovat a nesmí v jeho názvu být mezera.
5. Ve složce musí být pouze dokumenty wordu, jinak skript skončí chybou.
6. Jednotlivé nálezy jsou odděleny mezerou (5x odentrovány)
7. Pokud je hledané slovo i v těch dalších (zde třech) je ignorováno
8. Prohledávání dost dlouho trvá. Ukončení práce skript oznámí oznámením "Skript ukončil práci" (okno Wscript host).
Postup:
Uvedený text v Code si označ a zkopíruj Ctrl+C. Otevři notepad (poznámkový blok) a vlož Ctrl+V. Ulož s příponou .vbs. (Nebo ulož jako text a pak třeba v totalcommanderu přejmenuj). Nepoužívat textové editory jako word, wordpad a podobně!!!. V notepadu si můžeš rovnou zeditovat potřebné vlastnosti (cestu, hledané slovo, výsledný soubor, počet slov za hledaným slovem).
Soubor spustíš poklepáním na ikonu souboru.
Kód: Vybrat vše
'*******************************************************
'* Skript testuje word soubory na zvolené slovo *
'* Pokud slovo najde, vytvoří dokument vysledek *
'*V dokumentu zapíše hledané slovo + určený počet slov *
'* *
'* Vytvořeno pro PC-HELP *
'* *
'* Etienn@Script v 1.0 *
'*******************************************************
Option Explicit
Rem the Word Application
Dim objWord, wordPath, objDoc, objSelection
Rem the document we are currently reading data from
Dim currentDocument
Rem the number of Words in the current document
Dim numberOfWords
Dim i, k, n, y, x, slovo
Dim Textw, fso, oFolder, oFiles, wsh
Const slozka = "C:\test\" 'Složka s word soubory
Const najdi = "počítač" 'Hledané slovo
Const nasled = 3 'Počet slov zkopírovaných za hledaným slovem
Set wsh = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder(wsh.ExpandEnvironmentStrings(slozka)) 'objekt složky
Set oFiles = oFolder.Files ' Objekt seznamu souborů ve složce
Textw = ""
' Kolekce souborů ve složce
For Each k In oFiles
wordPath = slozka & k.Name
Rem Create an invisible version of Microsoft Word
Set objWord = CreateObject("Word.Application")
Rem don't display any messages about documents needing to be converted
Rem from old Word file formats
objWord.DisplayAlerts = 0
Rem open the Word document as read-only
Rem open (path, confirmconversions, readonly
objWord.Documents.Open wordPath, false, true
Rem Access the document
Set currentDocument = objWord.Documents(1)
Rem How many words are in the document
NumberOfWords = currentDocument.Words.count
For i = 1 To numberOfWords
y = StrComp (currentDocument.Words(i), najdi)
x = StrComp (currentDocument.Words(i), najdi & " ")
If y = 0 Or x = 0 Then
For n = 0 To nasled
Textw = Textw & currentDocument.Words(i + n)
'WScript.Echo "i+n= " & i + n & vbcrlf & "Textw ve smyčce= " & Textw
Next
Textw = Textw & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
i = i + nasled
End If
Next
Rem Close the document
currentDocument.Close
Rem Free memory used to store the document object
Set currentDocument = Nothing
Rem exit Microsoft Word
objWord.Quit
Set objWord = Nothing
Next
'vytvoření souboru a zápis
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "12"
objSelection.TypeText Textw
objSelection.TypeParagraph()
objDoc.SaveAs("C:\test\vysledek.doc")
objDoc.Close
objWord.Quit
Set objWord = Nothing
WScript.Echo "Skript ukončil práci"
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router
-
- Level 1
- Příspěvky: 90
- Registrován: září 11
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
Děkuji za popis
to, že to dlouho trvá mi nebude vadit, můžu pustit přes noc. Ale vadí mi zkopírování následujících slov.
Uživatel mi za hledané slovo dá 20 mezer a mám problém. (myslím si, že důvod, proč se mi objevila chybová hláška "chyba na 52řádku, 4 znak - došlo k vyjímce! Zdroj: NULL " je ten, že soubor našel jen 10 po sobě jdoucích mezer ).
Dalo by se to udělat tak, že by program sice hledal slovo, ale zkopíroval by následující 2 odstavce?
to, že to dlouho trvá mi nebude vadit, můžu pustit přes noc. Ale vadí mi zkopírování následujících slov.
Uživatel mi za hledané slovo dá 20 mezer a mám problém. (myslím si, že důvod, proč se mi objevila chybová hláška "chyba na 52řádku, 4 znak - došlo k vyjímce! Zdroj: NULL " je ten, že soubor našel jen 10 po sobě jdoucích mezer ).
Dalo by se to udělat tak, že by program sice hledal slovo, ale zkopíroval by následující 2 odstavce?
Re: Automatické zkopírování od určitého řetězce
Mno s Wordem moc nepracuji, ale šel bych na to nějak takhle
(ještě reaguji na původní zadání +200 znaků - já dal 20)
Je to kód do wordu (ne script) = otevřít nový dokument, přidat modul a do něj vložit a spustit
Screenupdating ve wordu funguje zvláštně
Pokud jde o další odstavec, mohlo by fungovata pro další
To už ale musíte vyzkoušet sami ;)
Kód: Vybrat vše
Sub subExplore()
Const sDIR As String = "C:\Users\04koutny\Documents\TEST"
Const sFILE_TYPES As String = "*.doc"
Const sWORD As String = "TESTOSTERON"
Const iCHARS_BEFORE As Integer = 0
Const iCHARS_AFTER As Integer = 20
Dim bScreen As Boolean
bScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
Dim vType As Variant, sFile As String, iCounter As Integer
For Each vType In Split(sFILE_TYPES, ",")
sFile = Dir(sDIR & "\" & vType)
While Not sFile = vbNullString
ThisDocument.Range.InsertAfter Text:=sDIR & "\" & sFile
ThisDocument.Range.InsertAfter Text:=vbNewLine
With Documents.Open(FileName:=sDIR & "\" & sFile, ReadOnly:=True, AddToRecentFiles:=False)
Selection.Find.Text = "TESTOSTERON"
iCounter = 0
While Selection.Find.Execute
iCounter = iCounter + 1
ThisDocument.Range.InsertAfter Text:=iCounter & ". " & .Range(Selection.Start - iCHARS_BEFORE, Selection.End + iCHARS_AFTER).Text
ThisDocument.Range.InsertAfter Text:=vbNewLine
Wend
.Close SaveChanges:=False
ThisDocument.Range.InsertAfter Text:=vbNewLine
End With 'Documents.Open(FileName:=sFile, ReadOnly:=True, AddToRecentFiles:=False)
sFile = Dir
Wend
Next vType
Application.ScreenUpdating = bScreen
End Sub
(ještě reaguji na původní zadání +200 znaků - já dal 20)
Je to kód do wordu (ne script) = otevřít nový dokument, přidat modul a do něj vložit a spustit
Screenupdating ve wordu funguje zvláštně
Pokud jde o další odstavec, mohlo by fungovat
Kód: Vybrat vše
Selection.Paragraphs(1).Next.Range.Text
Kód: Vybrat vše
Selection.Paragraphs(1).Next.Next.Range.Text
To už ale musíte vyzkoušet sami ;)
-
- Level 1
- Příspěvky: 90
- Registrován: září 11
- Pohlaví:
- Stav:
Offline
Re: Automatické zkopírování od určitého řetězce
Jste skvělí a úžasní
že se vkládá i jméno souboru je výborné...
že se vkládá i jméno souboru je výborné...
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
JavaScript - načtení web stranky do řetězce.
od L.L » 16 bře 2024 10:23 » v Programování a tvorba webu - 4
- 1980
-
od L.L
Zobrazit poslední příspěvek
20 bře 2024 07:29
-
-
-
Automatické přehrávání videa Příloha(y)
od fafejt » 09 úno 2024 13:59 » v Internet a internetové prohlížeče - 4
- 703
-
od fafejt
Zobrazit poslední příspěvek
09 úno 2024 17:30
-
-
- 4
- 4447
-
od ArtisPier
Zobrazit poslední příspěvek
26 zář 2023 12:29
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů