< návrat zpět

MS Excel


Téma: Ošetření TextBoxu rss

Zaslal/a 27.10.2017 21:41

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?

Zaslat odpověď >

#038157
elninoslov
Napríklad:
Sub pokus()
Dim Subor As String, Bodka As Long
Subor = "Z:\Pokus súbor.xls"
Bodka = InStrRev(Subor, ".")
If Bodka > 0 Then
If LCase(Right$(Subor, Len(Subor) - Bodka)) <> "xlsm" Then Subor = Left$(Subor, Bodka) & "xlsm"
Else
Subor = Subor & ".xlsm"
End If
ThisWorkbook.SaveAs Filename:=Subor, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
citovat
#038158
avatar
Vynalézáte kolo.

A) Jasná pravidla hry a názvosloví
B) Application.GetSaveAsFilename a vlastní koncovkacitovat
#038275
avatar
Když chceš, aby uživatel neukládal pomocí standardního ukládacího formuláře Windows (jak ti radí xlnc), kašli na kontroly obsahu textboxu (já bych kontroloval jenom neprázdnost) a soubor ulož takto:

On Error Resume Next
... příkaz k uložení ...
If Err Then ... vynadej uživateli, vrať ho do textboxu ...
On Error GoTo 0
... pokračování ...citovat
#038277
elninoslov
If Err ...
A ako to rieši to, že mu to uloží bez makier ? Žiadnu chybu nedostane ak bude v názve na konci xlsx alebo xls. Len nebude súbor bez makier funkčný, keďže predpokladám, že xlsm je vyžadované práve kvôli nejakej makro-funkcionalite.
To čo píše xlnc som ešte neskúšal.citovat
#038288
avatar
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
citovat
#038306
avatar
Vyřešeno.
Stačilo doplnit ".xlsm"

xlApp.ActiveWorkbook.SaveAs UserFormExpBom.TextBoxUmisteni.Value & "\" & UserFormExpBom.TextBoxNazevSouboru.Value & ".xlsm", 52citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21