OK, tak skúste toto. Vymaže prebytočné riadky za posledným vyplneným riadkom podľa "A"
Sub SaveSheet()
Dim R As Long
ThisWorkbook.Worksheets("Hárok3").Copy
With ActiveWorkbook
With .Worksheets(1).UsedRange
.Value = .Value
R = .Parent.Cells(Rows.Count, "A").End(xlUp).Row
.Resize(.Rows.Count - R + 1).Offset(R, 0).EntireRow.Delete Shift:=xlUp
End With
Application.DisplayAlerts = False
.SaveAs "e:\Download\novy.xlsx", xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close False
End With
End Sub
To je iba správa MsgBox. To čo sa píše v tej správe som chcel vedieť. Uvádza adresu použitej oblasti vs. adresu vypočítanej oblasti podľa určujúceho stĺpca. Teda od Vás chcem, aby ste mi napísal toto:
Napísalo mi to toto:
A1:G105
A1:G86
Ja Vám tam potom doplním kód o zmazanie prípadnej prebytočnej časti na konci, ktorá spôsobuje načítanie "prázdnych" riadkov.
Aký "oddělující sloupec" ? Ja píšem "Ktorý stĺpec je určujúci". Podľa ktorého sa dá určiť, podľa ktorého sa dá zistiť počet riadkov dát. Lebo to, že v bunke "nič" nie je neznamená, že je prázdna. A vzorcami sa často vpisuje do buniek "", to ale nie je prázdna nepoužitá bunka. Takže tie Vaše vzorce sú UsedRange - použitá oblasť. Preto sa pýtam, podľa ktorého stĺpca Vašich dát, sa dá určiť, ktorý riadok je posledný. Ako sa mám pre Boha inak opýtať?
Ktorý stĺpec je určujúci pre zistenie, v ktorom riadku dáta končia?
Za to
.Value = .Value
pridajte dočasne tento riadok, ale s tým, že to "A" nahraďte tým určujúcim stĺpcom
MsgBox .Address(0, 0) & vbNewLine & .Resize(.Parent.Cells(Rows.Count, "A").End(xlUp).Row).Address(0, 0)
výsledok mi napíšte.
Hmm, asi hej, ale s takým skriptom nepomôžem ...
Vyskúšané aj na Win 7 x86 Pro SK + Excel 2007. Všetko funkčné. Niečo bude u Vás zle.
Neviem, ako pomôcť. Ja to spustím a ide to OK. Excel 2019 x64 Pro SK
Spustite prvý krát makro "UpdateCell" a čakajte minútu, pozerajte na list na logy. Musíte každú minútu vidieť 2 logy. Ak dokončíte testovanie, stopnite ďalšie naplánované spúšťanie makrom "SERVICE_PROC_STOP".
Dajme tomu, že je 12:30:00. Aký čas nastavujete v makre? Napr. 12:32:00? Musí sa spustiť o 12:32:00. Potom ako sa vykoná, je opäť naplánované na 12:32:00 ale nie dnes.
Urobte pokus, nastavte v tomto pokusnom makre čas teraz + 2 min, aby ste mal čas. V makre UpdateCell nastavte čas teraz + 4 min. Spustite toto makro Pokus. O 2 min sa spustí makro UpdateCell, to prebehne a svoje ďalšie spustenie nastaví o ďalšie 2 min. Teda behom 4 min, uvidíte 2x spustenie makra UpdateCell. A ďalšieho sa dočkáte až zajtra (teda to je predpoklad, že to tak funguje, nikdy som neskúšal čakať deň).
Sub Pokus()
Application.OnTime TimeValue("12:32:00"), "UpdateCell"
End Sub
Sub UpdateCell()
Application.OnTime TimeValue("12:34:00"), "UpdateCell"
ThisWorkbook.RefreshAll
Call mojemakro
End Sub
Sub SaveSheet()
ThisWorkbook.Worksheets("Hárok3").Copy
With ActiveWorkbook
With .Worksheets(1).UsedRange
.Value = .Value
End With
Application.DisplayAlerts = False
.SaveAs "e:\Download\novy.xlsx", xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close False
End With
End Sub
Čo znamená "stejně nic"?
Nespustí sa naplánované makro? Mne áno.
Spustí ale neaktualizuje sa? Mne áno.
Neotvorí MAKRO1? Mne áno.
Otvorí ale nezavrie - tu nastáva chyba. Workbooks() potrebuje názov súboru, teda "MAKRO1.xlsm", nie iba "MAKRO1".
Vyhodí nejakú chybu? Mne áno, viď vyššie.
Skúste nepoužiť ActiveWorkbook ale použite to čo ja teda ThisWorkbook. Pretože nie je zaručené, že v momente naplánovaného spustenia makra, bude aktívny zrovna zošit s makrami.
Skúste dať pred Close ešte Save
Sub mojemakro()
With Workbooks.Open(ThisWorkbook.Path & "\" & "MAKRO1.xlsm")
.Save
.Close True
End With
End Sub
A kde máte Application.OnTime s nejakým Vašim volaným makrom? Ja tam vidím iba moje "Aktualizacia_Dat". Také makro Vy neuvádzate. Ak je namiesto môjho "Aktualizacia_Dat" Vaše makro UpdateCell, potom ho musíte volať/nastaviť v Application.OnTime
Application.OnTime TimeValue("10:28:00"), "UpdateCell"
Na prianie pridávam oba varianty pre Rayfilm Office 38x21,2 0102.
V tom prípade je to ešte jednoduchšie
=SUBSTITUTE(B1;"??/??";C1)&" "&A1
=DOSADIT(B1;"??/??";C1)&" "&A1
Akurát, že ozaj 20/2022 ??? To je čo za mesiac?
A ak opäť nesedí ani upresnený popis, a otázniky tam nie sú, tak:
=LEFT(B1;SEARCH("Expirace: (";B1)+10)&C1&")</p> "&A1
=ZLEVA(B1;HLEDAT("Expirace: (";B1)+10)&C1&")</p> "&A1
a to ešte čakám, že doupresníte, že raz tam "Expirace : (" je, inokedy nie, alebo, že to nemusí končiť na ")</p>"
Pokus ???:
=A1&" "&LEFT(B1;IFERROR(SEARCH("expirace (";B1)-1;LEN(B1)))&"expirace ("&C1&")"
=A1&" "&ZLEVA(B1;IFERROR(HLEDAT("expirace (";B1)-1;DÉLKA(B1)))&"expirace ("&C1&")"
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.