Stalker napsal/a:
...Vybere jakou oblast?
Začátečník napsal/a:
Ale toto funguje.
Nefunguje, vrací stejnou chybu.
Problém je spíše s definicí oblasti odkud kopírovat
Range(Cells(1, 1), Cells(122, 34))Zřejmě se v tomto případě neobejdu "přepínání" mezi sešity a "klasickým" kopírováním
převádět to na Range("A1:AH122")se mi moc nechce.
Dobrý den, mám dotaz proč funguje makro
Workbooks(zdrojSesit).Worksheets(zdrojList).Range("A1:AH122").Copy _
Workbooks(cilSesit).Worksheets(cilList).Range("A1")
a makro
Workbooks(zdrojSesit).Worksheets(zdrojList).Range(Cells(1, 1), Cells(122, 34)).Copy _
Workbooks(cilSesit).Worksheets(cilList).Range(Cells(1, 1))
skončí chybou 1004
Díky za nakopnutí definice.
xlnc napsal/a:
...Člověk by předpokládal, že kdo dělá s Excelem, myslí hlavou....
=CONCATENATE()
Tipuji - "\" na konci cíle?
Radek-Klepacek napsal/a:
...co je vidět hned na první pohled v první příloze, kterou jsem zde poslal.
Jaká je lokalizace Excelu?
Co použít text #DIV/0!
...
What:="#DIV/0!", Replacement:="0%", _
...
Jednodušší je to řešit na úrovni vzorce, nikoliv textu.
Obdoba se tu již řešila.
Zalomení textu je reprezentováno znakem LF, konec řádku pak znaky CR+LF.
Logicky tedy excel bere při importu toto zalomení jako nový řádek.
K čemu je ve zdroji zalomení? V CSV samozřejmě nemá opodstatnění a působí pouze problémy.
Řešení - nepoužívat zalomení řádků před exportem do CSV. Stejně je tam pouze HTML kód a ten si pak prohlížeč převezme bez ohledu na to, jestli je tam zalomení nebo ne.
Pánové prozatím Vám děkuji za reakce, bohužel, vzhledem ke zdravotní indispozici, se pravděpodobně nebudu moci v nejbližších 4 týdnech problematice dále věnovat.
Později se ozvu.
Zkusím vytvořit obdobu souborů.
Ano, jedná se o souvislou oblast dat, nejsou přerušena prázdnými řádky ani sloupci.
ScreenUpdating mám prozatím v originálu zakomentovaný, funkce pro uložení prozatím obsahuje i ladící procedury (proto její volání),
Ano, zapisování hodnot lze v některých případech ukládat v poli, ve většině však ne - nejsou souvislé oblasti.
Proměnné jsou definovány, jen sem do ukázky nebyly definice vloženy.
Zdravím,
potřeboval bych nasměrovat, jak zrychlit zpracování makra. Bohužel nemohu uvést konkrétní příklad.
Sešit1 obsahuje zdrojové hodnoty
Sešit2 obsahuje doplňkové hodnoty
Funkcí SVYHLEDAT byly doposud ručně dotahovány data do sešitu1 do desítek sloupců ze sešitu2 (nepohodlné).
i = 2
While Cells(i, "B") <> Empty
row = Najdi_Data(wrkb_1, Cells(i, "B"))
If row = Empty Then
value = "#NENÍ_K_DISPOZICI"
Call Uloz_Data(i, "D", value)
Call Uloz_Data(i, "E", value)
Call Uloz_Data(i, "F", value)
Call Uloz_Data(i, "G", value)
Call Uloz_Data(i, "S", value)
Else
Call Uloz_Data(i, "D", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "D"))
Call Uloz_Data(i, "E", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "E"))
Call Uloz_Data(i, "F", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "B"))
Call Uloz_Data(i, "G", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "C"))
Call Uloz_Data(i, "S", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "F"))
End If
i = i + 1
Wend
Private Sub Uloz_Data(row, col, value)
Cells(row, col) = value
End Sub
Private Function Najdi_Data(filename, value)
wrkb_act = ActiveWorkbook.Name
If Not Intersect(Cells(2, 2), Range("B:B")) Is Nothing Then
With Workbooks(filename).Worksheets("List1")
Set Nalezeno = .Cells.Find(what:=value, after:=Cells(2, 2), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
End With
If Not Nalezeno Is Nothing Then Application.Goto Nalezeno, True
End If
If Not Nalezeno Is Nothing Then
Najdi_Data = Nalezeno.row
End If
Workbooks(wrkb_act).Activate
End Function
Při stovkách řádků lze použít, ovšem při tisících řádků je již časově náročné.
Jak lze optimalizovat a zrychlit toto makro?
Děkuji za rady.
Asi jste nečetl odkazy, které jsem uvedl, že?
Stačí si upravit funkci pro Vaše potřeby.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.