Může mi někdo poradit jak zadat do počítače abych vyhledal text v závorkách příklad [Určitě to pomůže] potřeboval bych najít "to" děkuji za radu [[](*)[]] takto najdu celé závorky s textem ale jen konkrétní text je problém.
Fórum › Visual Basic
Nalezení slova v závorkách
Já bych si oindexoval páry závorek, otevírací/zavírací, a pak hledal slova.
Ty nalezená bych testoval, jestli nejsou uvnitř závorek.
FOR i = 1 to PocetZavorek
IF ZacatekSlova > Index(i, 1) AND KonecSlova < Index(i, 2) THEN
ZAVORKY = TRUE
EXIT FOR
NEXT i
#3 pee-jay_cz
děkuji za odpověď ale asi jsem to nepochopil jak to mám doplnit když chci v závorkách třeba najít [ Pavle je borec.] chci najít jen borec.
FOR i = 1 to PocetZavorek
IF ZacatekSlova > Index(i, 1) AND KonecSlova < Index(i, 2) THEN
ZAVORKY = TRUE
EXIT FOR
NEXT i
Nejdriv hledam slovo - vsechny jeho vyskyty - a pak overuji, zda lezi uvnitr nejakeho druhu zavorek, i kdyz naprogramoval jsem jen jedny [], prozatim.
' VB6
Option Explicit
Private Type ZavorkyType 'Pozice paru zavorek v hledanem textu
Oteviraci As Long
Zaviraci As Long
End Type
Private Zavorky() As ZavorkyType '[]
Private PocetZavorek As Long
' Muze byt: Zavorky1 (), Zavorky2 [], Zaovorky3 {}, Zavorky4 <>…
Private Sub Form_Load()
Dim FindWhere As String
Dim FindWhat As String
Dim Pos As Long
FindWhere = "[Pavel je borec.] Pavel je borec. [Pavel je borec.]"
IndexujZavorky FindWhere
'----------------------------------------------------------------------------
FindWhat = "borec"
Pos = 1
Repeat:
Pos = InStr(Pos, FindWhere, FindWhat)
If Pos > 0 Then
Debug.Print "Slovo je na pozici: " & Pos;
If UvnitrZavorek(Pos, Len(FindWhat)) Then
Debug.Print ", je v zavorkach."
Else
Debug.Print ", neni v zavorkach."
End If
Pos = Pos + 1
GoTo Repeat
End If
End Sub
Private Sub IndexujZavorky(ByRef txt As String)
Dim Pos1 As Long
Dim Pos2 As Long
Pos1 = 1
PocetZavorek = 0
Repeat:
Pos1 = InStr(Pos1, txt, "[")
If Pos1 > 0 Then
Pos2 = InStr(Pos1 + 1, txt, "]")
If Pos2 > 0 Then
PocetZavorek = PocetZavorek + 1
ReDim Preserve Zavorky(1 To PocetZavorek)
Zavorky(PocetZavorek).Oteviraci = Pos1
Zavorky(PocetZavorek).Zaviraci = Pos2
Pos1 = Pos2 + 1
GoTo Repeat
End If
End If
End Sub
Private Function UvnitrZavorek(ByVal ZacatekSlova As Long, ByVal DelkaSlova As Long) As Boolean
Dim i As Long
Dim KonecSlova As Long
KonecSlova = ZacatekSlova + DelkaSlova - 1
For i = 1 To PocetZavorek
If ZacatekSlova > Zavorky(i).Oteviraci _
And KonecSlova < Zavorky(i).Zaviraci Then
UvnitrZavorek = True
Exit Function
End If
Next i
End Function
Jeste se vratim k puvodnimu zneni otazky.
Pokud se podarilo hledane slovo najit a jde jen o to zbavit se zavorek, staci to procistit:
Private Function CleanString(ByVal txt As String) As String
' ZAVORKY
txt = Replace(txt, "(", vbNullString)
txt = Replace(txt, ")", vbNullString)
txt = Replace(txt, "[", vbNullString)
txt = Replace(txt, "]", vbNullString)
txt = Replace(txt, "{", vbNullString)
txt = Replace(txt, "}", vbNullString)
CleanString = Trim$(txt)
End Function
Děkuji za odpověď právě to zkouším ale nemůžu to rozchodit možná že jsem to nenapsal do úvodu jedná se mě o word 2013 tam je taky VB ale teď vlastně přemýšlím jestli to bude chodit i ve wordu? protože jste psal VB6. Nebo to je přímo jen pro Visual Basic 6 děkuji za odpověď.
Tak to, Marku, opravdu nevim. VB6 a VBA jsou temer identicke a rozdily se tykaji - z toho, co jsem zjistil - jen pouziti common controls. Jako třeba instancovani optionboxu atd. I kdyz na druhou stranu jsem programoval jenom v excelu, a to ve starsich verzich, takze kdovi. Musite to zkouset :)
Ja ale vubec nepremejslim...
Private Sub Form_Load() se nemuze ve Wordu automaticky spustit po nacteni a zobrazeni formulare, protoze tam zadny formular (Userform) neni, dokud neni vytvoren uzivatelem.
Varianta A: vytvorit Userform pojmenovany Form.
Varianta B: vytvorit aspon tlacitko pojmenovane treba cmdSearch a pak uz staci prejmenovat proceduru z Form_Load na cmdSearch_Click.
A kod by mel byt spustitelny.
Děkuji opravdu za návod tak jsem se tehdy snažil to rozchodit ale vzdal jsem to neměl jsem čas na to si to rozebrat až teď jsem to rozchodil ale jen jedna věc mě teď trápí je to možná primitivní věc ale nemohu nasměřovat to do souboru kde to chci projít
zkoušel jsem toto
ChDrive "F"
adresar = "F:\Marek aktualizace\"
ChDir adresar
SouboryKtere = Dir("*.docx")
FindWhere = Documents.Open FileName:=adresar & "\" & SouboryKtere
IndexujZavorky FindWhere
Bude to fungovat?
děkuji za odpověď ale nějak mi to nejde nahradit
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Nalezení rekurze — založil sh00ter
Automatické nalezení adresy — založil Michal Ř.
Nalezeni kombinace odporu — založil Matej Rychtarik
Nalezení souborů na disku — založil savek
[C#] Nalezení znaku ve stringu — založil MartiniBaby
Moderátoři diskuze