Potřebuji vytvořit graf ze dvou (kontingenčních) tabulek. Mám tabulku Výdajů a Příjmů (resp. vydaných faktur). Tabulka obsahuje u výdajů číslo dokladu, cenu, kategorii a měsíc, ve kterém náklad vznikl. V tabulce příjmů je naopak tabulka s číslem dokladu, cenou a měsícem, kdy byla vystavena faktura. Jednoduše potřebuji tyto dvě tabulky spojit do jednoho sloupcového grafu, kde bude na ose x měsíc a na ose y částka za náklady a příjmy. Bohužel se mi nedaí tabulky datově propojit, protže jsou stejné. Nevím tedy, jak to vymyslet jinak. Předpřipravenou tabulku přidávám do přílohy.
Vyřešeno.
Stačilo doplnit ".xlsm"
xlApp.ActiveWorkbook.SaveAs UserFormExpBom.TextBoxUmisteni.Value & "\" & UserFormExpBom.TextBoxNazevSouboru.Value & ".xlsm", 52
Ten problém bude trochu obsáhlejší. Chyba je trochu komplikovanější, zůstává mi, pokud se soubor neuloží, viset Excel v procesech. Momentálně to řeším takto, ale je to asi celé úplně špatně.ˇPro ukládání používám metodu SaveAs.
Kód je osekán o různé kopírování buněk atd, to není pro uložení podstatné.
Dim xlApp As Excel.Application
Sub makro1()
'Ošetření chyb
On Error GoTo ErrH:
'Ověření, jestli existuje složka, do které se má soubor uložit
If Len(Dir(UserFormExpBom.TextBoxUmisteni.Value, vbDirectory)) = 0 Then
MsgBox "Zvolená složka pro uložení kusovníku neexistuje"
Exit Sub
End If
'Nastavení nové aplikace Excel
Set xlApp = New Excel.Application
'----následuje kód pro kopírování
'Uložení excel souboru
xlApp.ActiveWorkbook.SaveAs UserFormExpBom.TextBoxUmisteni.Value & "\" & UserFormExpBom.TextBoxNazevSouboru.Value, 52
ErrH:
If Err.Number = 1004 Then
xlApp.Quit
Set xlApp = Nothing
MsgBox "Chybně zadaný název souboru nebo složky. Název nesmí začínat mezerou a obsahovat znaky < > ? [ ] : / *"
Exit Sub
End If
End Sub
Ahoj,
potřeboval bych ošetřit TextBox, ze kterého načítám název souboru. Přes makro ukládám soubor a uživatel si zvolí název a vepíše jej do TextBoxu.
Původně jsem to měl udělané tak, že přes jednoduchou podmínku If jsem vyloučil mezery, tečky, speciální znaky atd. To sice fungovalo báječně, akorát uživatelé chtějí zadávat (bohužel) soubory s mezerama, tečkama a já nevím čím vším. Takže jsem to upravil a jenom přes Err podchytávám chybovou hlášku VisualBasicu ohldně speciálních znaků, délky názvu atd (kód tuším 1004). To je lepší pro uživatele, ale bohužel je nyní možné do TextBoxu vepsat i tečku a třeba příponu. Takže já potřebuju (mám nastaveno) ukládat jako *.xlsm ale uživatel může do TextBoxu zadat nazev.xls a už mi to uloží v úplně jiném formátu, než potřebuji.
Jak tedy ošetřit TextBox, aby bylo možné použít pravidla Windows (nesmí začínat mezerou, nesmí být speicální zanky atd...) ale zároveň nebylo možné zadat příponu?
Ahoj,
tohle právě mám a potřebuju to upravit. Když teď klepnu na Cancel tak se SaveAs okno zavře. Teď udělám nějaké úpravy v Sešitu a chci jej uložit Přes File -> Save As, ale pak už se tam FileName nedopíše. Jde to nějak modifikovat? Nikde jsem na to nepřišel.
Díky, netušil jsem, jak se ta funkce jmenuje.
Ještě bych měl dotaz. Momentálně mi to funguje tak, že jiná aplikace spustí excel včetně tohoto dialogového okna s již předvyplněným názvem. To není problém, to jsem si našel a funguje to. Bylo by možné to ale upravi tak, aby když se spustí excel a vyskočí SaveAs dialog, abych jej mohl zrušit přes Cancel, soubor upravit a následně, když kliknu v Excelu na Soubor -> Uložit jako, aby tam byl opět předdefinovaný název?
Mně se spustí vždy nový sešit, do kterého se naexportují nějaká data z jiné aplikace, takže při ručním vyvolání ukládacího okna mi to do názvy vepisuje např. Sešit1.xlsx. Tohle bych chtěl načítat třeba z nějaké buňky. Jde to?
Ahoj,
je možné pomocí nějaké funkce vyvolat stejné dialogové okno, jaké se spustí při kliknutí na uložit jako? Prohledával jsem práci se soubory, ale je tam jen funkce SaveAs, která umí načíst cestu z nějaké buňky nebo se musí zadat ručně, což nechci. Dá se nějak vyvolat toto "ukládací" okno, kde is uživatel sám vybere, kam chce uložit?
elninoslov: Děkuji moc, jdu nastudovat, jak to funguje
Ještě bych potřeboval poradit, kam vložit kód, který načítá první volný řádek do proměnné. Potřebuji to použít ve formuláři, konkrétně v TextBoxu. Takže do TextBoxu zadám text, který se zapíše do prvního volného řádku.
Momentálně to mám následovně:
Private Sub TextBox1_Change() 'Textbox pro jméno
PrazdnyBLg = Worksheets("Db").Cells(Rows.Count, 1).End(xlUp).Row + 1
Worksheets("DB").Cells(PrazdnyBLg, 1).Value = TextBox1.Value
End Sub
Jenže výsledek je takový, že při každém zadaném znaku to znovu počítá obsazené řádky a výsledek vypadá následovně (do TextBoxu vypisuju slovo test):
Naddis sloupce
1. t
2. te
3. tes
4. test
Dokázali byste poradit, kam to nejlépe umístit? Formulář otevírám přes tlačítko, tak jsem to zkoušel dávat do části, kde je kód pro otevření formuláře, ale to nějak nefunguje.
Aha, tak proto to asi nefungovalo Samozřejmě jsem hledal první prázdný řádek.
Vyzkoušel jsem postup od elninoslov a funguje, díky!
Ahoj,
vyhledám si pomocí cyklu poslední prázdný řádek v sešitu a zapíšu jej do proměnné. Následně potřebuju do toho prázdného řádku (který mám v proměnné) zapsat data. Jak to mám udělat?
Worksheets("Db").Range(PrazdnyBLg).Value = TextBox1.Text
Tohle mi bohužel nefunguje, zkoušel jsem to s uvozovkama, bez uvozovek, s doplněním rozsahu např. Range("A1:A" PrazdnyBlg) ale to mi zase zapisuje do celého sloupce.
Věděl by někdo, jak tam tu proměnnou zapsat?
Funguje, perfektní, díky!
Ahoj,
potřeboval bych vytvořit makro, které zapíše jméno uživatele a čas, který naposledy uložil (změnil) sešit. Sešit je pod heslem, takže nepotřebuju hlídat, jestli a co se v sešitu změnilo.
Pokud jej chce někdo editovat, musí zadat heslo.
Vymslel jsem si tohle:
JmenoUzivatele = Environ("USERNAME")
Range("D5") = "Poslední změna: " & JmenoUzivatele & " |" & Format$(Now, " dd/mm/yyyy | hh:mm:ss")
To splní mou funkci, ale jen při spušetí přes tlačítko.
Existuje funkce, která by to makro spustila při/před uložením při kliknutí na tlačítko uložit?
Já právě budu vybírat jen souvislou oblast, takže je toto řešení pro mě naprosto dostačující.
Funguje, perfektní, děkuji.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.