Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  10 11 12 13 14 15 16 17 18   další »

Co tohle?

Jenom úplně jednoduchá věc. Zvykl jsem si, když sepisuju kód, jakmile napíšu For i=1 To ...atd. hned zato si dám řádek Next i - a teprve potom dávám příkazy mezi to.

Zase chybka:) Tu kontrolu tam mám taky, jen jinak, tak už jen pro úplnost:

Zkusím tedy já.

Můj výzkum: kód k tlačítku je zapsán v listu. Tak mi přijde pochopitelné, že makrem nepřelezeš oblast toho listu. Asi.
Ale dá se samozřejmě zapsat na list2 takto:
Worksheets("List2").Range("A1") = "neco"
K tomu volání.. vytvoříš třeba makro "pokracuj" v modulu toho sešitu. Kód tlačítka pak bude:
Private Sub CommandButton1_Click()
Range("A1") = "zapis na ten samy list" ' nebo jine akce
pokracuj
End Sub

Modul:
Sub pokracuj()
Worksheets("List2").Select
Range("A2").Select ' aby tam byl ten Select
ActiveCell = "zapsano makrem Pokracuj"
End Sub

Celé to makro asi není důležité, stačí si vyzkoušet jen ty poslední 2 řádky na tlačíto. Jiný list aktivovat jde, ale buňka v něm už ne. Už jsem se s tím setkal, a protože ve vba zatím tápu, vzal jsem to jako vlastnost.
Dá se to obejít tak, že na další pokračování zavoláš "normální" makro umístěné v modulu a tam už si na listu2 můžeš aktivovat co chceš.

tady by mohla pomoct taková polo-automatizace. Ten název ve vedlejší buňce použít pro sestavení "textu" odkazu v dalším sloupci, nebo více sloupcích. Pak zkopírovat text do hlavní buňky s odkazem a doplnit =. Není to bůhvíco, ale vhodným způsobem vytváření toho textu se někdy uspoří hodně práce. Ve finále si přehodíš v celém sloupci vzorce pouhým Ctrl+c / ctrl+v a například záměnou ctrl+h znaku za =. Vyzkoušej v příloze, sešity do D:\dokumenty nebo si opravit cestu dle sebe.

Co nepřímý odkaz? Předpoklad: ty stránky jsem pochopil jako listy a že se jedná o čistý excel, ne vba. Pojmenování listů je v příkladu základní, když mají jiná jména, bude horší to nějak zautomatizovat pro nepř.odkaz. Ale šance je.

Ještě pokračování. Vyzkoušel jsem celek, funguje mi na 2010CZ. Tímto se omlouvám tvůrcům v testu stahovaných www, snad jim to nezahltí server.

Ten původní dotaz jsem posílal já. Od té doby jsem si trochu posunul level (v Excelu). 3
Předpokládám, že ten cyklus budeš chtít použít na nějaké vlastní www adresy.
Je důležité zjistit, ve kterém sloupci je "hlavní" obsah načtených dat.
Ten se může měnit podle toho, zda se importuje celá stránka nebo jen vybrané tabulky (označené šipkama v okně importu). Podle toho "hlavního sloupce" se pak dá určit poslední řádek pro vkládání dat pod sebe.
Dál je nutné v úseku With - End With zaměnit řádek .RefreshStyle tak, aby importovaná data šly pod sebe.
Já importuju kde co a často taky chci jen jednorázová data, bez uloženého webového dotazu. Dráždí mě pak, že Excel otravuje s možností aktualizace dat po načtení souboru. Pro to mám v cyklu řádek, kdy se právě uložený web dotaz smaže. Předpoklad je, že v sešitu nejsou žádné další web dotazy, které chceš ponechat. Pak se dá taky na řádek .Name dát cokoliv, třeba "aaaaa".
V kódu je tenhle řádek zapoznámkovaný - je to jen možnost, data budou importovaná na aktuální list (prázdný, jiný než UVOD - s tím se dá ještě taky pohrát, založit si nový, přejmenovat atd., to tam ale není).
Sub import_cyklus()
Dim i As Long, Sloupec As Long
Sloupec = 1 ' zde soucasne sl. na UVOD pro brani www adres a kontrolovaný sl. pro posl.radek
For i = 2 To Worksheets("UVOD").Cells(Rows.Count, Sloupec).End(xlUp).Row
adresa = "$A$" & Cells(Rows.Count, sloupec).End(xlUp).Row + 1
With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.peloton.cz/soutez?tym=" _
& Worksheets("UVOD").Cells(i, Sloupec), Destination:=Range(adresa))
.Name = "soutez?tym=" & Worksheets("UVOD").Cells(i, Sloupec)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertEntireRows
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage ' zde import cele stranky
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
' ActiveWorkbook.Connections(1).Delete
Next i
End Sub

Tento kód jsem ale netestoval, zkoušel jsem jen části a s jinou www.

Když se objeví to "opsaný obrázek atd." znamená to, že máš nevhodnou příponu přílohy. Chce to excel zazipovat.

Ne, tím to není, automatický přepočet zapnutý, zoufalé mačkání F9, nic nepomáhá. 6
edit doplnění. Funguje mi to, když "oťukám" všechny text.pole, do zavření excelu. Ale mě jde hlavně o stav po načtení, aby se hned při první změně buňky objevila hodnota v text.poli a nemusely se podnikat jiné akce.

Ahoj, mám potíž. V Excelu 2007 se mi neaktualizuje textové pole, které mám propojené s buňkou. Při prvním pokusu to asi nějak fungovalo, udělal jsem náročné schema, asi den práce, s několika text.poli, které mají zobrazovat hodnoty z buněk.
A teď je to na nic, po novém načtení a změně buněk se to nezobrazí. Až po klepnutí, někdy druhém, na pole
Pak třeba zázrakem některé fungují, jiné ne. Chová se mi to divně. Myslel jsem, že je to zamknutým listem, pak že seskupením pole s dalšíma a s kresbama.
Ale nakonec mi nejde ani jedno jediné v čistém sešitě, po načtení nereaguje. Co s tím můžu dělat?
V Excel2010 funguje OK. Zkuste to prosím někdo ve 2007.

Pardon, ještě k té vlastní funkci, aby to fungovalo pro víc cifer, je třeba změnit definovaný výstupní formát, v 1.řádku vynechat "As Integer"
Function najdi_cislo(retez As String) a pak dát formát buňky na číslo, ne obecný. Jinak Poki, Megavzorec: 9

Co si napsat vlastní funkci, je to sice jako makro, ale zase člověk aspoň vidí vzoreček v buňce 5 .
Function najdi_cislo(retez As String) As Integer
' najde prvni souvislou radu cisel v retezci
Dim delka As Integer, i As Integer
Dim cifry As String, znak_x As String
delka = Len(retez)
cifry = ""
For i = 1 To delka
znak_x = Mid(retez, i, 1)
If IsNumeric(znak_x) Then
cifry = cifry + znak_x
Else ' neni cislo
If Len(cifry) > 0 Then ' uz ne znak zkraje retezce
Exit For
End If
End If
Next i
najdi_cislo = Val(cifry)
End Function
edit: zapsáno samozřejmě do modulu ve vba (Alt+F11)
Ukázka i v příloze, neošetřené např. pro číselnou buňku


Strana:  1 ... « předchozí  10 11 12 13 14 15 16 17 18   další »

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