Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  45 46 47 48 49 50 51 52 53

Ahoj, hledám nějaké elegantnější řešení jak aktualizovat pomocí makra grafy v powerpointu.
Ve skutečnosti jsou to na Slide vložené objekty MS Excel, kdy jeden list obsahuje data (odkazující se na externí soubor) a druhý list (který je na Slidu zobrazen) obsahuje graf tvořený danými daty. Momentálně aktualizace probíhá tak, že makro otevře zdrojový externí excelový soubor a pak projíždí v prezentaci veškeré objekty a jeden za druhým aktivuje (jakoby dvojklik na objekt) - data v excelovém objektu se aktualizují teprve při aktivaci a pouze když je otevřen i zdroj. Takže aktualizace vypá tak že mi tam problikává jeden objekt za druhým a aktualizuje se. Dokonce jsem v Powerpointu nenašel ani funkci Application.screenupdating, kterou v excelu používám, abych mohl vypnout to přeblikávání. Nemá někdo nějaký tip?

Díky
M@

F2, nebo řádek vzorců.

M@

O žádném nevím, ale nejsem vševěd :-). Pokud existuje tak se rád přiučím.

M@

=když(je.chybhodn(svyhledat.....);proveď něco jiného, třebas hledej někde jinde;jinak zopakuj svyhledat......)

M@

Tady posílám kód který pomůže s fází jedna a tak trochu i s fází dvě - jedná se o smyčku, do kódu jsem dal i popisy jednotlivých řádků:

Dim radek As Single ' deklarace proměnné
radek = 4 ' nastavení prvního prohledávaného řádku na 4
Do While Cells(radek, 6) <> "" 'smyčka dokud v buňce daného řádku, v 6. sloupci (F) je cokoliv jiného než nic
If IsDate(Cells(radek, 6)) = True Then If Cells(radek, 6) <= Date Then Rows(radek).EntireRow.Hidden = True 'obsahuje-li buňka F danného řádku datum, tak je-li toto datum <= aktuální datum, tak skryj
radek = radek + 1 'postup na další řádek
Loop 'jdi na začátek smyčky
End Sub


Při stisku tlačítka lze použít stejná smyčka, která uvnitř bude mít jiný kód.
Pro kopírování do jiného souboru bych asi nepoužil přímo kopírování pro každý řádek, ale během té smyčky bych hodnoty z řádků pro kopírování zapisoval do jiného "pracovního" listu tohoto souboru a teprve po skončení smyčky bych otevřel zálohovací soubor, znovu spustil smyčku pro vyhledání prvního prázdného řádku a tam bych vložil hodnoty z "pracovního" listu, jehož obsah bych poté smazal.

Asi jedině použitím makra viz. následující 2 kódy:
1) Ověřování jestli ve sloupci A je hodnota, pokud ano, tak vloží řádek:
Public Sub radky()
Application.ScreenUpdating = False 'zakázat vykreslování v průběhu makra - zvýší rychlost
For i = 1 To 65536 'maximum řádků na listu, ale lze nastavit vlastní a nižší číslo - makro pak bude rychlejší protože bude ověřovat jen třeba 2000 řádků
If Cells(i, 1) <> "" Then Cells(i + 1, 1).EntireRow.Insert
Next
Application.ScreenUpdating = True 'povolit vykreslování
End Sub


2) anebo za předpokladu, že data jsou pod sebou bez prázdných řádků a ve sloupci A je vždy hodnota:
Public Sub radky2()
Application.ScreenUpdating = False 'zakázat vykreslování v průběhu makra - zvýší rychlost
Dim radek As Single
radek = 1
Do While Cells(radek, 1) <> "" 'maximum řádků na listu, ale lze nastavit vlastní a nižší šíslo - makro pak bude rychlejší protože bude ověřovat jen třeba 2000 řádků
Rows(radek).EntireRow.Insert ' Cells(radek + 1, 1).EntireRow.Insert
radek = radek + 2
Loop
Application.ScreenUpdating = True 'povolit vykreslování
End Sub

M@

Pokud je vzorec správně, tak je třeba zkontrolovat prohledávanou oblast, je-li správně nastavena a pokud je i toto správně a stále vznikají nějaké neshody, tak to může být snad už jen formátem buněk číslo / text.

Bez použití makra viz. přiložený soubor

M@

V referencích projektu si povolit použití Microsof Scripting Runtime knihovnu (scrrun.dll) a pak do modulu vložit následující kód (případně si ho upravit - není ošetřen na chyby):

Sub nacti()
Dim fso As New FileSystemObject
Dim fil As File
Dim ts As TextStream
Dim text() As String
Dim radek As Single

radek = 1

Set fil = fso.GetFile(ThisWorkbook.Path & "\Report_" & Format(Day(Date), "0#") & "-" & Format(Month(Date), "0#") & "-" & Right(Year(Date), 2) & "_EOD.txt")
Set ts = fil.OpenAsTextStream(ForReading)

Do While ts.AtEndOfStream = False
text = Split(ts.ReadLine, ";")
For i = 0 To UBound(text)
Cells(radek, i + 1) = text(i)
Next
radek = radek + 1
Loop

End Sub


M@

Pokud v buňce bude vždy jen jeden ze 4 operátorů (+-*/), tak lze použít vzorec v příloze.

M@

Chtělo by to nějaký příklad, takhle si to nějak neumím představit.

Dneska mi to už moc nemyslí, takže by to třeba šlo jednodušeji, ale zkusil jsem to přes databázové funkce. V přiloženém souboru jsem ponechal původní data a mnou doplněné vzorce jsou ve sloupcích J a K + jsem si přidal pomocné DB kritéria sloupce L-O řádky 1 a 2 - identifikace typu (pojmenované oblasti).

Snad to takto bude vyhovovat - snad je to i elegantnější než řešení přes pomocné tabulky na listu 2 :-).

S pozdravem
M@

PS: Teď ještě koukám, že kontrolu chyby pro počet stran jsem udělal jen v buňce J3 a neroztáhl jsem to až dolu, ale to už si můžeš opravit :-). Ona ta chyba kterou tam ošetřuji může nastat jen na prvním řádku a tam je to ošetřený :-), takže když to zůstane jak to je, tak se nic neděje.

řádek vzorců při vybraném obrázku lze aktivovat stiskem klávesy F2.


Strana:  1 ... « předchozí  45 46 47 48 49 50 51 52 53

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje