Další možností je použít
Worksheets("jmenoListu").Protect password:="heslo", UserInterfaceOnly:=True
List bude uzamčen pro uživatele, ale makra do něj mohou zapisovat bez nutnosti jej odmknout.
https://learn.microsoft.com/en-us/office/vba/api/excel.worksheet.protect
https://wall.cz/index.php?m=topic&id=55933&page=1#post-55936
Možné řešení:
v buňce A1 je uvedená cesta k souboru, do buňky B1 se uloží název bez přípony.
Sub JmenoBezPripony
Dim aJmeno
Dim jmenoSouboru As String, jmeno As String
jmenoSouboru = Range("A1")
aJmeno = Split(jmenoSouboru, ".", , vbTextCompare)
jmeno = Replace(jmenoSouboru, "." & aJmeno(UBound(aJmeno)), "", , , vbTextCompare)
Range("B1")=jmeno
End Sub
Máte na mysli toto?
Jasné, to mi bohužel došlo, když už jsem to odeslal.
V mém případě ani není nutné mít pomocný sloupec, protože různá data zpracovávám pokaždé jinak seřazená, ale to není podstatné.
Díky za cenné rady a řešení.
I před důchodem se člověk stále učí .. 
EDIT:
to elninoslov
možná bych doplnil With .Sort
.SortFields.Add2 Key:=rng, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
. SortFields.Clear
.SortFields.Add2 Key:=rng, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
aby se nekumulovaly jednotlivé úrovně filtru každým spuštěním
Seřazení dat byla taky jedna z možností nad kterými jsem uvažoval. Jedno jestli vymazavana oblast bude na konci nebo začátku, hlavně že bude spojitá.
Díky, to jsou právě ty obavy z vysoké stability a spolehlivosti MSO.
Pokusím se upravit pro variabilní oblast dat.
Dobrý den,
pro výmaz nevyhovujících záznamů využívám metodu mazání dat pomocí SpecialCells. Pro řádově 1000 řádků to je obstojná rychlost výmazu, ale při počtech záznamů v řádu desítek a stovek tisíc je to pomalé.
Existuje jiný, efektivní, způsob výmazu velkého množství dat.
Současný kód výmazu:
Sub VymazNepotrebne()
Dim rng As Range
Set rng = Range("D2:D" & Cells(Rows.Count, 1).End(xlUp).Row)
With rng
.Formula = "=IF(A2=1,0,0/0)"
On Error Resume Next
.Cells.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
.Clear
On Error GoTo 0
End With
Set rng = Nothing
End Sub
A čemu se má uvedený výraz rovnat?
Pokud výraz bude logickou hodnotou, pak bude podmínkou vyhodnocen.
Podle popisu výše to určitě nebude logická hodnota.
Doporučuji deklarovat proměnné a určit jejich datové typy.
bobika99 napsal/a:
dotaz = "(.Cells(5, 2).Value Like "020319??00" Or .Cells(5, 2).Value Like "0203??0000" Or .Cells(5, 2).Value Like "02??000000")"
Jak jsem již uvedl, podmínka musí být logická
dotaz="5 + 5 = 10"
If dotaz = "5 + 5 = 10" then
' správně
Else
' špatně
End If
Jinak už nevím jak to srozumitelněji napsat.
bobika99 napsal/a:
...ve skutečnosti tam je poskládaná podmínka...
A co se má vyhodnotit jako správná podmínka?
Podmínka se vyhodnocuje jako logická hodnota, tedy pokud DOTAZ je definován jako "5 + 5 = 10" (to je textová hodnota) musí se s něčím porovnat.
If dotaz = "5 + 5 = 10" then
' správně
Else
' špatně
End If
A1 je buňka, A je sloupec, 1 je řádek
možné řešení v příloze
PavelJanec napsal/a:
...Porovnání bude podle názvu sloupců...
Interior.ColorIndexhttps://learn.microsoft.com/cs-cz/office/vba/api/excel.interior.colorindex
Samostatný list nelze přiložit jako přílohu emailu, stejně tak jako list neuložíte na úložiště.
Vložit lze soubor (sešit) obsahující pouze uvedený list.
.Attachments.Add (soubor)
Dalo.
Rows(i) nahradit uvedeným Range
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.