Zošit, do ktorého sa má obsah RZ_XXX zapísať, teda do zošitu Seznam, bude zatvorený ?
V TotalCommander nemôžete mať problémy s radením ?! Používam len ten, a nemám problém. Základ je, aby ste mali rovnaký zápis, teda napr.
1,01
1,02
2,00
alebo
001,01
001,02
002,00
alebo
00101
00102
00200
a zaručene Vám to zoradí správne, za to si dám odtrhnúť ruku. Treba myslieť dopredu na počet znakov, a preto ako je vidieť z príkladu, ten Váš návrh nieje šťastný, lebo keď pridáte za 9,00 ďalší, čiže 10,00, tak Vám to zoradí takto
1,01
1,02
10,00
2,00
...
Inak urobil som Vám to makro. Do políčka zadáte číslo (ono je to ale text, nie číslo) pred čiarkou (Váš oddeľovač), a všetky súbory *.pdf, ktoré majú na začiatku to číslo (text) + "," Vám otvorí. Snáď ste to myslel takto.
Samozrejme, je jedno, kam celý adresár nakopírujete, aplikuje sa vždy aktuálna cesta.
Slovné úlohy ... no to je odjakživa môj problém
Takže:
1. Vy chcete aby sa Vám po kliknutí na Hypertextový odkaz v stĺpci B, otvorili všetky súbory, ktoré sú v danej zložke na ktorú odkazuje tento Hypertext, a ktoré obsahujú v názve číslo, ktoré obsahuje názov súboru v stĺpci A ??? To je nezmysel, nie ? Hyperlink nemôže odkazovať na viac ako jeden súbor. To by sa dalo jedine makrom, ktoré by po kliknutí (označení) na bunku v B, vyhľadal napr. prvé číslo v A (v rovnakom riadku) a toto číslo hľadal medzi názvami súborov v adresári, kam odkazuje B, a všetky validné súbory postupne otváral.
2. Vy máte niekde okrem týchto názvov súborov v A, a hyperlinkov v B, ešte nejakú bunku do ktorej píšete len číslo, a napr. vedľa tlačítko, ktoré naštartuje vyššie opísaný proces prehľadávania a otvárania súborov? Hľadať sa bude číslo z tejto bunky.
1. Tento súbor premenovať na meno mailu (pred zavináčom)
2. Pri otvorení napíše chybu, že nemôže odoslať mail, samozrejme, lebo treba nastaviť ešte
3. V časti "With Flds" vyplniť celú mail adresu z ktorej sa bude odosielať mail, heslo, port, a smtp server.
4. V časti ".To =" zmeniť na konci doménu (za zavináčom) mailu, na ktorú sa pošle správa.
5. V časti ".From =" zmeniť zobrazované meno odosielateľa a mail odosielateľa
6. V časti ".HTMLBody" zmeniť Hyperlinkový odkaz a text
7. V časti "Chyba:" zabezpečiť, čo sa udeje, ak nebude možné odoslať mail.
To či je názov súboru mail celý alebo len pred @, a to či je ten názov súboru mail odosielateľa či príjemcu, si už snáď dokážete zmeniť.
Tu Vám posielam jedno riešenie. Zistil som, že počet tých kódov nieje rovnaký, a v nových je jeden navyše. Čiže je potrebné kontrolovať, ktoré kódy sú nové a pridať ich. Pridal som nové nakoniec. Potom sa Vám vložia už adekvátne čísla. Je to robené cez polia, a je to dostatočne rýchle.
No čítal som jeden zápis zo školenia mzdovej účtovníčky, a teda na SK vôbec nieje také jednoduché vypočítať dovolenku ako by ste si to predstavovala.
U nás je mnoho podmienok, a podľa mňa to bude v CZ obdobné.
Napr.
-musí byť min 60 dní odpracovaných
-koeficient sa mení podľa veku
-ak je začiatok aj koniec v jednom roku, tak sa to počíta z pracovných dní, ak je to cez rok, tak z kalendárnych mesiacov
-prevažná časť mesiaca sa takisto počíta s nejakou podmienkou.
-štátny podnik a súkromný sektor, je tiež rozdiel v počte dní dovolenky
...
Mne keď sa to pokúšala mzdová účtovníčka chvíľu vysvetľovať, tak som na to rezignoval
Jedine niekto naozaj zbehlý v tejto problematike Vám dokáže pomôcť.
Napadá ma pár otázok.
1. Tie položky v RZ_XXX!D4:D28 budú vždy v rovnakom poradí ako je poradie v Seznam!B1:Y1 ? Ak áno, stačí iba jedno Application.Transpose
Ak nie tak:
2. Tie položky v RZ_XXX! budú mať variabilný počet riadkov ?
3. Ak áno, tak čo sa má stať keď príde riadok, ktorý ešte nemá adekvátny stĺpec v Seznam! ?
4. V RZ_XXX! môže byť viac riadkov s rovnakým "kódom" ale napr inou cenou ?
5. Môže nastať, že cena v RZ_XXX! bude prázdna ?
6. Ak áno, tak čo sa má namiesto nej zapísať "" alebo 0 ?
7. Celý zápis prebieha v Seznam! vždy v jednom riadku, alebo sa riadok mení podľa toho koľko je v danom stĺpci zaplnených riadkov (to súvisí z predošlou otázkou a prípadným zápisom "")
Prosím odpovedzte na všetko, a keď večer prídem, snáď Vám na to mrknem.
Určite na to potrebujete makro ?
Takto to funguje, tak ako chcete, nie ?
Skúste ten adresár presunúť, a otvoriť zošit odtiaľ, normálne sa bude odkazovať na súbory v aktuálnom umiestnení.
Nehovorili ste pred tým, že listy budú číslované od "1" ? Teraz Vám to čísluje od 6. listu, nie od listu "6". Vaša posledná príloha absolútne nekorešponduje s tým kam pristupuje tento kód (riadky, stĺpce). Bez aktuálnej prílohy a podľa možnosti celého makra, sa radí naozaj veľmi zle.
Čo by som vám, ale poradil aj takto z brucha je:
-na začiatku kódu
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
-na konci kódu
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Ďalej by som použil konštrukciu
With
...
End With, tam kde sa Vám opakujú prístupy na rovnaký objekt, napr. :
Sheets(4 + 2 * u)
Sheets(5 + 2 * u)
Do With môžete zjednodušiť iba jednu stranu rovnice, musíte sa rozhodnúť ktorú.
Alebo, by som použil polia. Deklarácia
Dim Sml()
Na začiatku cyklu i by som dal načítať všetky údaje, aj tie ktoré sa nepoužijú.
Sml = Sheets("seznamsmluv").Cells(4 + i, 1).Resize(1, 13).Value 'udaje
a zápis by bol napr. pre:
Sheets("seznamsmluv").Cells(4 + i, 1)
Sheets("seznamsmluv").Cells(4 + i, 6)
Sheets("seznamsmluv").Cells(4 + i, 5)
takýto
Sheets(5 + 2 * u).Cells(1 + j, 1).Resize(1, 3) = Array(Sml(1, 1), Sml(1, 6), Sml(1, 5))
a pre
Sheets(4 + 2 * u).Cells(12, 4) = Sheets("seznamsmluv").Cells(4 + i, 13)
Sheets(4 + 2 * u).Cells(12, 5) = Sheets("seznamsmluv").Cells(4 + i, 9)
by som dal
Sheets(4 + 2 * u).Cells(12, 4).Resize(1, 2) = Array(Sml(1, 13), Sml(1, 9))
Ďalej by som ešte znížil počet volaní bunky
Cells(4 + i, 1)
a nahradil
C = Cells(4 + i, 1)
a použil iba C
Opakujem, že to dávam z brucha, keďže nieje príloha, ani začiatok a koniec procedúry, navyše aj tá asi nieje kompletná, je tam jedno prázdne else. Nevidíme data, nevidíme "číslovanie" listov, a už vôbec nevidím žiadnu blbuvzdornosť. Čo ak niekto premenuje list, alebo prehodí poradie ? Je šanca, že sa niečo také udeje ? Vytvárate tam niekde listy ? Ak nie, čo sa udeje, ak bude viac dát ako listov ?...
Čiastočne som tomu prišiel na kĺb:
Vyššie spomínaná chyba sa po týždňovej pauze, keď som sa teraz k tomu vrátil neobjavuje.
kp57 mi dal ešte nápad, či by nepomohlo vytvorenie privátneho certifikátu napr. podľa tohto
http://www.howto-outlook.com/howto/selfcert.htm
ale neviem posúdiť, keďže chyba zmizla skôr ako som to vyskúšal.
Ak Vám stačí posielať mail z mailového konta č. 1, tak môžete použiť
Dim OutApp As Object
Dim OutMail As Object
Ak ale máte v Outlooku niekoľko mailových kont, a chcete posielať z iného, treba použiť
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
To ale môžete použiť iba v prípade, že najskôr pridáte vo VBA - Tools - References - Microsoft Outlook 15.0 Object Library.
Je to potrebné pre to, aby ste mohli použiť číslo konta
.SendUsingAccount = OutApp.Session.Accounts.Item(From)
Pre vloženie Hypertextového odkazu bude potrebné použiť HTMLBody namiesto Body, kde bude ale pravdepodobne potrebné používať HTML značky, ako v kóde HTML stránky.
.HTMLBody = "text v maile" & "<br />" & "<a href=""http://www.google.com"">Google</a>"
Aby ste najskôr iba videli ako bude mail vyzerať zmente
.Send
na
.Display
nič sa neodošle, iba Vám zobrazí správu.
Celý kód:
Sub SendMail()
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim Sender As String, From, i As Byte
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Sender = "odkoho@odkoho.sk"
On Error Resume Next
For i = 1 To OutApp.Session.Accounts.Count
If OutApp.Session.Accounts.Item(i) = Sender Then From = i: Exit For
Next i
If From = 0 Then
MsgBox ("Odosielateľ " & Sender & " v Outlooku neexistuje.")
GoTo Koniec
End If
With OutMail
.To = "komu@komu.sk"
.CC = ""
.BCC = ""
.Subject = "skúška"
.HTMLBody = "text v maile" & "<br />" & "<a href=""http://www.google.com"">Google</a>"
.SendUsingAccount = OutApp.Session.Accounts.Item(From)
.Send
End With
Koniec:
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Ale mám zatiaľ nevyriešený problém. A to je potreba odkliknúť povolenie pre odoslanie mailu "aplikáciou v zastúpení" Outlooku, čiže makrom. Neviete ako by sa to dalo vyriešiť ?
Napr.:
Sub CopyTo()
Dim X As Long, Y As Long
Application.ScreenUpdating = False
X = 3
Y = 4
Selection.Copy
With ActiveSheet
.Cells(ActiveCell.Row, ActiveCell.Column + X).Select
.Paste
.Cells(ActiveCell.Row, ActiveCell.Column + Y).Select
.Paste
.Cells(ActiveCell.Row, ActiveCell.Column + Y).Select
.Paste
.Cells(ActiveCell.Row, ActiveCell.Column + Y).Select
.Paste
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
alebo
Sub CopyTo2()
Dim X As Long, Y As Long
Application.ScreenUpdating = False
X = 3
Y = 4
With Selection
.Copy Destination:=Cells(ActiveCell.Row, ActiveCell.Column + X)
.Copy Destination:=Cells(ActiveCell.Row, ActiveCell.Column + Y + X)
.Copy Destination:=Cells(ActiveCell.Row, ActiveCell.Column + Y + Y + X)
.Copy Destination:=Cells(ActiveCell.Row, ActiveCell.Column + Y + Y + Y + X)
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Ako vždy :
čím novší - tým "lepší"
PS: Hovorím hlavne o Win, pretože toto je špecifikum W8/W8.1/W8.1.1 (a stavím krk na to, že aj W10). Často programy ani nedokážu zapísať svoj súbor, bez spustenia ako Správca (Administrátor nestačí).
Ale ak by sa našlo riešenie aj pre moju novšiu a "lepšiu" kombináciu, nebudem sa hnevať ani ja, pretože uvažujem o implementácii niečoho takéhoto do svojej aplikácie.
Ja som Vám to urobil takto
Do D43 zadajte
=IF(NUMBERVALUE(D42)>5;D42-5;"")
a pretiahnite tento vzorec aj do bunky pod ňou (D44).
Teraz do D42 zapíšte hodnotu napr. 11.
Dostanete výsledok:
11
6
1
Má to byť takto ?
Ak by to náhodou malo byť, tak, že v bunke D42 bude vypočítavaná hodnota vzorcom, a jeho výsledok bude 11, ale Vy tam chcete max 5, teda takto:
5
5
1
Tak to treba urobiť inak, ale podmienkou je, že D42 musí byť vypočítavaná. Zadávanej hodnote ručne do D42 to nieje možné, pretože bez makra nieje možné meniť tú istú bunku aj ručne aj vzorcom.
Napadá ma pár možností, ale či je to to, čo chcete ...
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.