Sub Import() Dim MsgResponse, MsgTit As String Dim ImportFirstFile As Boolean, ImportDir As String, ImportFile As String Dim ZdrojSoubor As Workbook, ZdrojList As Worksheet, ListData As String, ZdrojAdresa As String Dim ZdrojOblast As Range, c As Range Dim CilOblast As Range, i As Integer, j As Integer MsgTit = "Import dat" ImportFirstFile = True ' identifikace prvniho souboru v adresari ImportDir = "E:\excel" ' cesta k souborum ZdrojAdresa = "a1,b2,c3:d4,f5" ' adresy bunek se zdrojovymi daty Set CilOblast = ActiveWorkbook.Worksheets("list1").Range("a1") Application.ScreenUpdating = False j = 0 ' ofset radku na cilovem listu Do If ImportFirstFile Then ImportFile = Dir(ImportDir & "\*.xls") ' prvni soubor v adresari If ImportFile = "" Then _ MsgResponse = MsgBox("Adresáø souborù: '" & ImportDir _ & "' k importu je prázdný!", _ vbOKOnly + vbInformation, MsgTit): Exit Do ImportFirstFile = False Else ImportFile = Dir ' dalsi soubory v adresari End If If ImportFile = "" Then _ MsgResponse = MsgBox("V adresáøi souborù: '" & ImportDir _ & "' k importu nejsou další soubory!", _ vbOKOnly + vbInformation, MsgTit): Exit Do ' MsgBox ImportFile ' pouze pro test ' ListData = "list1" ' algoritmus prirazeni nazvu zdrojoveho listu dle souboru ' Set ZdrojSoubor = Workbooks.Open(ImportDir & "\" & ImportFile) ' otevrit soubor Set ZdrojList = ZdrojSoubor.Worksheets(ListData) Set ZdrojOblast = ZdrojList.Range(ZdrojAdresa) i = 0 ' ofset sloupcu na cilovem listu For Each c In ZdrojOblast.Cells CilOblast.Offset(j, i).Value = c.Value i = i + 1 ' dalsi sloupec na cilovem listu Next c ZdrojSoubor.Close j = j + 1 ' dalsi radek na cilovem listu Loop ' dalsi soubor Application.ScreenUpdating = True End Sub
Stačí změnit nastavení oblasti : Set CilOblast = ActiveWorkbook.Worksheets("list1").Range("a1")
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené »»»»»»»»»»»»»»»»»»»»»»» UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
Mohl by jste to upřesnit, nemyslím import do jiného listu, ale stávajícího sešitu. To znamená, toto makro mám např. v sešitu1, po spuštění procedury se importují data ze sešitu2 do právě otevřeného sešitu1 do určitého listu.
Uvedena procedura umistena v modulu aktivniho sesitu slouzi k importu dat do tohoto sesitu na list, jehoz nazev je v procedure - Set CilOblast = ActiveWorkbook.Worksheets("list1").Range("a1")-, z vice sesitu, kde data jsou v techto sesitech na listech se stejnym nazvem a ve stejnych bunkach. Pozadujes "aby se data importovala do aktivního sešitu na určitý list " a to prave procedura vykonava. Zkus prosim precizneji formulovat pozadavek. PS.Koukni se sem, jak importovat data: http://excelplus.net./news.php?readmore=20
Data by se ti měly importovat do aktivního sešitu, nejde to snad? Co ti hází za chybu? Vyzkoušel jsem ho u sebe a nic neobvyklého jsem nezpozoroval.
Ve složce E:\excel by měl/y být umístěn/y soubor/y s daty, které se mají po spuštění makra importovat do sešitu. Takže když si vytvoříš excelový dokument, nakopíruješ do něj makro a spustíš ho, data ze složky E:\excel se importují do tvého sešitu. Nic dalšího makro neumí.
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené »»»»»»»»»»»»»»»»»»»»»»» UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
Ještě jeden dotaz týkající se importu. V přiloženém souboru je makro, které opět importuje data z databanka.xls, do import.xls sheet2. Vše funguje makro je funkční, jen když změním koncovku, aby se importovala data místo databanka.xls, tak databanka.csv...to znamená jiný formát. Tak to nelze. Jak na to?...Je to poslední dotaz co se týče importu dat.
Sub InputCsvFile(ByVal CestaSoubor As String, ByVal Wsht As Worksheet) ' oddelovac polozek je ";" Dim Blok As Range, Cll As Range ' nacteni souboru do listu - QueryTables With Wsht.QueryTables.Add(Connection:="TEXT;" & CestaSoubor, _ Destination:=Range("A1")) .TextFileCommaDelimiter = False .Refresh BackgroundQuery:=False End With ' nasledujici cast procedury aktivovat, kdyz desetinny oddelovac cisel je "." ' ' definovat blok pro prevod cisel z textoveho tvaru na cislo ' With Wsht ' Set Blok = .Range(.Range("c2"), .Range("c2").End(xlDown)) ' End With ' ' format bunky a prevod ' For Each Cll In Blok ' Cll.NumberFormat = "0.00" ' Cll.Value = CDbl(Val(Cll.Value)) ' Next Cll End Sub
' testovaci procedura pro volani InputCsvFile Sub TestInputCsvFile() Dim CestaSoubor As String, Wsht As Worksheet ' cesta a soubor, lze nacist i z listu, napr: CestaSoubor =Worksheets("list1").Range("A1") CestaSoubor = "e:\excel\databanka.csv" ' list pro ulozeni dat Set Wsht = Worksheets("list2") Wsht.Activate Wsht.UsedRange.ClearContents InputCsvFile CestaSoubor, Wsht End Sub
Snad to vyresi tve trable s nacitanim souboru *.csv
Sub InputCsvFile1(ByVal CestaSoubor As String, TargetCll As Range) Dim Str As String, PoleTemp Dim i As Long, j As Integer
Open CestaSoubor For Input As #1 If Not EOF(1) Then i = 0 Do Line Input #1, Str PoleTemp = Split(Str, ";") j = 0 Do If IsNumeric(PoleTemp(j)) Then TargetCll.Offset(i, j).Value = CDbl(Val(PoleTemp(j))) TargetCll.Offset(i, j).NumberFormat = "0.00" Else TargetCll.Offset(i, j).Value = PoleTemp(j) End If j = j + 1 Loop While j <= UBound(PoleTemp) i = i + 1 Loop While Not EOF(1) End If Close #1 End Sub
Sub TestInputCsvFile1() Dim CestaSoubor As String, TargetCll As Range CestaSoubor = "e:\excel\databanka.csv" ' ulozit do: Set TargetCll = Worksheets("list3").Range("a1") InputCsvFile1 CestaSoubor, TargetCll End Sub
Dobrý den,
mám ve VBA upravený sešit, který čerpá data z jiných Excelovských sešitů. Po přechodu Excel 21 na Excel 24 přestalo toto spojení přestalo fungovat. Vyskakuje mi hláška : Method updatelink of object _Workbook failed.
Tuší někdo jak do šablon v programu POHODA (které se používají pro tvorbu rozpočtu) zkopírovat data z excelu (viz obrázek).
Jde to nějakým způsobem? Kopírovat to ručně je poněkud zdlouhavé...
Díky.
Poslední příspěvek
Lze to přes import *.xml. Data z Excelu se uloží jako XML. Stormware na to má přesnou strukturu dat, takže je nejlepší se obrátit na firmu a oni ti s tím pomůžou (za peníze). Lze to také velmi snadno automatizovat.
Dobrý den,
potřebuji vytvořit jeden souhrnný vzorec (viz 4) v Excel 2016; kdy budou zohledněny následující podmínky.
Pro jednotlivé kroky jsem si postupně rozepsal vzorce, viz příloha, nedaří se mě je však kombinovat v jeden.
1) Když sloupce B a C...
Poslední příspěvek
Ono se to nezdá, ono to chaotické je:
Ke druhému příkladu vzorec s komentářema:
=ZVOLIT(
POČET(B8:C8) + 1;
; // obě buňky prázdné
x ; // v jedné buňce je číslo
KDYŽ( // 2 čísla
NEBO(
A(
POČET(B8:C8) = 2; // zbytečné, to je tady vždy...
Excel 5000 řádků 2 úzké sloupce a v tisku to je 100 stránek. Potřebuji ty 2 sloupce vytisknou 2x vedle sebe na A4 na výšku, aby to byla polovina listů papíru.
Excel to neumí. Když to tisknu přes pdf a zadám 2 listy na jednu stránku, tak to zase...
Poslední příspěvek
Hoši díky, oba způsoby fungují. :thumbup: :thumbup:
Ty vzorce jsem musel upravit takto (ve sloupci B to zobrazovalo až od řádku 51):
=IFERROR(INDEX(List1!$A:$A; ŘÁDEK() + CELÁ.ČÁST((SLOUPEC()-1)/2) * 100); )
=IFERROR(INDEX(List1!$B:$B; ŘÁDEK() +...