Pisu ve VBA (pod Excelem 2003).
Pokud sem napisu nejaky kod kde mam s necim problem, tak me zajma samozdrejme hlavne jeho reseni, ale rad budu i za
opravu necoho, co na nej zadny vliv nema, ale proste se vam jen pri koukani na neco takoveho sviraji pesti (rozumej jde to
napsat lepe).
Mam problemek s prebiranim objektu z Wordu (makro se spousti v Excelu). Prebrat chci vlastni obsah stranek (jen "hlavniho
bloku" zapati, zahlavi a kdovico tam je jeste me nezajma). Prebrani funguje, ale zda se me byt nezkutecne pomale - presneji
zpocatku prebira jednu stranu snad minutu a v 30%-40% poctu stran se zrychli na nekolik sekund.
Takze co nechapu: a) Co se deje zpocatku (vytizeni procesoru 100%)?
b) Pokud zpocatku dam focus na Word (spustim makro v Excelu a pak kliknu na
Word) a v nem dojedu na konec dokumentu, opet se prebirani stran zrychli
na par vterin.
trochu to zkratim, takze kodu predchazi
Dim stranky As Word.Pages
Dim stranka As Word.Page
Dim odpocet As New Doba_trvani
...
Set stranky = app_word.Documents(1).ActiveWindow.Panes(1).Pages
i_stranky = -1
stranek = stranky.Count
neni = stranek
procento = 100 / stranek
ReDim p_stranky(stranek - 1)
odpocet.Caption = "Odpočet přebírání stránek z Wordu"
odpocet.Show 0
For Each stranka In stranky
i_stranky = i_stranky + 1
p_stranky(i_stranky).strana = i_stranky + 1
pocet = stranka.Rectangles.Count
If pocet > 0 Then
If pocet = 1 Then
p_stranky(i_stranky).i_radky = stranka.Rectangles(1).Lines.Count - 1
Set radky = stranka.Rectangles(1).Lines
Else
j = stranka.Rectangles(1).Lines.Count
idx = 1
For i = 2 To pocet
k = stranka.Rectangles(i).Lines.Count
If j < k Then
j = k
idx = i
End If
Next i
p_stranky(i_stranky).i_radky = stranka.Rectangles(idx).Lines.Count - 1
Set radky = stranka.Rectangles(idx).Lines
End If
ReDim p_stranky(i_stranky).radek(p_stranky(i_stranky).i_radky)
For k = 0 To p_stranky(i_stranky).i_radky
p_stranky(i_stranky).radek(k) = radky(k + 1).Range.text
Next k
End If
neni = neni - 1
je = je + 1
cas = ((Timer - cas_start) / je) * neni
procent = je * procento
odpocet.cas = Vteriny_na_cas(CLng(cas))
odpocet.procent = Round(procent, 2)
odpocet.Repaint
Next
odpocet.Hide
Set stranky = Nothing
Set stranka = Nothing
Set radky = Nothing
If zavrit = True Then app_word.Quit
Set app_word = Nothing