< návrat zpět

MS Excel


Téma: Automamtické ukládání bez zakázaných znaků rss

Zaslal/a 25.5.2017 13:01

Ahoj,
potřebuji poradit. Používám pro ukládání souboru do PDF makro.
Nazev = Range("I3").Value & "_" & Range("f11").Value

'Převod do PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Cesta & Nazev _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Problém nastane když buňka F11 obsahuje zakázaný znak. např. \ potřebuji doladit aby v případě že obsahuje zakázaný znak, byl tento nahrazen třeba mezerou.
děkuji.

Zaslat odpověď >

#036534
avatar
A čo sú to zakázané znaky????

Hľadať: "\"
Nahradiť:" "citovat
#036542
kabaka

marjankaj napsal/a:

A čo sú to zakázané znaky????


Žeby?

http://navody.rypo.sk/preco-nemozem-pouzivat-interpunkciu-v-nazve-suboru/

Nemôžete použiť ani jeden z tých deviatich zakázaných znakov. Znaky, ktoré nesmiete používať v názve súboru vo Windows:

/
:
*
?

<
>
|citovat
#036544
elninoslov
Doupravte si podľa seba...
Function OdstranHovadiny(Hodnota As String, Nahrad As String, Optional Odporucane = False) As String
Dim i As Byte, arrN
arrN = Array(Chr(255), "/", ":", "*", "?", "„", "<", ">", "|", "#", "%", "&", "{", "}", "\")
For i = 0 To IIf(Odporucane, UBound(arrN), 9)
Hodnota = Replace(Hodnota, arrN(i), Nahrad)
Next i
OdstranHovadiny = Hodnota
End Function

Sub pokus()
MsgBox (OdstranHovadiny("abc˙d&e?f\gh ij%", "-") & vbNewLine & OdstranHovadiny("abc˙d&e?f\gh ij%", "-", True))
End Sub
citovat
#036559
avatar
Omlouvám se asi jsem se špatně vyjádřil potřebuji aby se zakázaný znak odstranil pouze z názvu ukládaného PDF nikoliv z buňky.citovat
#036560
kabaka

Martin1224 napsal/a:

Omlouvám se asi jsem se špatně vyjádřil potřebuji aby se zakázaný znak odstranil pouze z názvu ukládaného PDF nikoliv z buňky.
Takže predsa ide o názov súboru. :)citovat
#036561
elninoslov
To si robíte srandu ? 1
Veď to makro použijete ako chcete, na odstránenie znakov z akéhokoľvek reťazca. Nielen z bunky, ale aj z premennej vo Vašom kóde.
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=OdstranHovadiny(Cesta & Nazev, "-") _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False


funkcia OdstranHovadiny má 2 povinné a 1 nepovinný parameter.
Hodnota - reťazec s možnými nedovolenými znakmi
Nahrad - reťazec/znak, ktorým sa má nahradiť nedovolený znak, ak je "" tak sa znak iba zmaže
Odporucane - True/False (v CZ liste je to PRAVDA/NEPRAVDA, v SK liste alebo v akomkoľvek makre je to True/False), ak sa neuvedie, alebo je False, kontroluje sa iba tých 9 znakov, ak je True skontrolujú sa všetky odporúčané znaky

To čo z funkcie vylezie použite ako chcete, či už ako parameter inej funkcie, alebo na priradenie do premennej. Návratová hodnota je upravený reťazec.

Použitie je totálne jednoduché.citovat
#036598
avatar
Děkuji za pomoc
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=OdstranHovadiny(Cesta & Nazev, "-") _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

takto mi to nefunguje ale když předřadím funkci před název tak to jde jak má.citovat
#036601
elninoslov
Áno samozrejme, lebo Cesta obsahuje dvojbodku. A ak by bol parameter Odporucane na True, tak by Cesta obsahovala aj \, čo by bola ďalšia chyba. To som prehliadol, keď som to písal. Na funkčnosť funkcie to nemá vplyv. Teda Cesta & Funkcia.

PS: Nie, že budete niekde prezentovať názov funkcie taký ako som dal ja, premenujte si ju 5citovat
#036626
elninoslov
Keďže sa mi nedá editovať posledný príspevok, a nieje to z neho celkom jasné
...Filename:=Cesta & OdstranHovadiny(Nazev, "-")...
tak pridávam trochu prerobenú verziu, viac v popise makra a v prílohe.
Function PrecistiNazov(Hodnota As String, Nahrad As String, Odporucane As Boolean, Optional KontrolaNahrad = True) As String
Dim i As Byte, arrN, DN As Byte, DH As Byte, LH As Byte

If Len(Hodnota) = 0 Then GoTo CHYBA
DN = Len(Nahrad)
If KontrolaNahrad Then
If DN <> Len(PrecistiNazov(Nahrad, "", Odporucane, False)) Then GoTo CHYBA 'Prečistenie nahradzovacieho reťazca
End If

arrN = Array(Chr(255), "/", ":", "*", "?", "„", "<", ">", "|", "\", "#", "%", "&", "{", "}", "=") 'Pole nahradzovaných znakov
Hodnota = WorksheetFunction.Trim(Hodnota) 'Ošetrenie nadbytočných medzier, zlomov ...

For i = 0 To IIf(Odporucane, UBound(arrN), 9) 'Nahradenie vybraných sád znakov
Hodnota = Replace(Hodnota, arrN(i), Nahrad)
Next i

If DN <> 0 Then
Hodnota = Replace(Replace(Replace(Hodnota, Nahrad, "/::"), "::/", ""), "/::", Nahrad) 'Ošetrenie duplicít nahradzovacích reťazcov
DH = Len(Hodnota)
If DH > DN Then
LH = IIf(Left$(Hodnota, DN) = Nahrad, DN, 0)
Hodnota = Mid$(Hodnota, LH + 1, DH - LH - IIf(Right$(Hodnota, DN) = Nahrad, DN, 0)) 'Ošetrenie výskytu nahradzovacích reťazcov na okrajoch
End If
End If

PrecistiNazov = Hodnota
Exit Function

CHYBA:
PrecistiNazov = "" 'V prípade chyby vráti ""
'PrecistiNazov = CVErr(xlErrValue) 'V prípade chyby vráti #HODNOTA + treba zmeniť návratovú premennú na Variant
End Function

Dá sa to urobiť na 100 spôsobov, s rôznymi "vylepšeniami". Nech si každý doplní, myslím, že je to teraz úplne jasné.
Příloha: zip36626_precisti-nazov-suboru.zip (16kB, staženo 24x)
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje