

Problém s makrem na odstranění češtiny v Excelové tabulce
Někde na webu jsem si našel makro, podle kterého by se měly v Excelové tabulce odstranit české znaky s diakritikou:
Sub Odcesti()
Dim Bunka As Range
Dim Oblast As Range
Dim PoleS()
Dim PoleBez()
Application.ScreenUpdating = False
PoleS = Array("Ä", "Á", "Č", "Ď", "É", "Ě", "Í", "Ĺ", _
"Ň", "Ö", "Ó", "Ř", "Š", "Ť", "Ü", "Ú", "Ů", "Ý", "Ž", _
"ä", "á", "č", "ď", "é", "ě", "í", "ĺ", "ň", "ö", "ó", _
"ř", "š", "ť", "ü", "ú", "ů", "ý", "ž")
PoleBez = Array("A", "A", "C", "D", "E", "E", "I", "L", _
"N", "O", "O", "R", "S", "T", "U", "U", "U", "Y", "Z", _
"a", "a", "c", "d", "e", "e", "i", "l", "n", "o", "o", _
"r", "s", "t", "u", "u", "u", "y", "z")
For Each Bunka In ActiveSheet.UsedRange
If (Not Bunka.HasFormula) And (Not HasValidation(Bunka)) Then
If Oblast Is Nothing Then Set Oblast = Bunka
Set Oblast = Union(Oblast, Bunka)
End If
Next Bunka
For i = 0 To 37
Oblast.Replace What:=PoleS(i), Replacement:=PoleBez(i), _
LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=True
Next i
Application.ScreenUpdating = False
End Sub
Když ho ale spustím, označí se mi výraz "HasValidation" a nahlásí mi to chybu: "Compile error: Sub or Function not defined."
Nevíte, jak to napravit, aby makro fungovalo? VBA je pro mě vískou nedaleko Toleda.
Starsi verze Excelu nepodporuji vlastnost HasValidation(Bunka), takze kdyz nemas na listu overovani vkladane hodnoty, pak muzes cast podminky And (Not HasValidation(Bunka)) klidne vypustit. Upravene makro (original je z: excel_vanocni.html) pro ty, co nepochazi z vesnicky nedaleko Toleda (, muzes priradit klavesovou zkratku):
P.S.: Bohuzel ve vlozenem kodu dochazi v retezci PoleS k nahrade velkeho a maleho 'r' a 't' s hackem (Ř,ř, Ť,ť) k nahrade nejakym paskvilem, proto si to v editoru VBA oprav (mozna po vlozeni makra do editoru VBA to bude v poradku).
Návštěvníku díky, už podruhé jsi mi vytrhl trn z paty (ohledně mých znalostí VBA se konkrétně jednalo o Achillovu šlachu).
Jinak makro bezchybně chodí i s těmi patvary.
Samotným závěrem alespoň pro mne zajímavý poznatek.
Toho makra na odčeštění excelové tabulky jsem se domáhal proto, že jsem ji nemohl převést do databáze MySQL a to ani když jsem ji zkonvertoval do *.mdb. Převod byl odmítnut jak v programu Navicat tak i standardně přes ODBC.
Na webu jsem se dočetl, že na vině jsou problémy se znakovou sadou. Tak jsem s neocenitelnou pomocí kolegy Návštěvníka transformoval tabulku do "cestiny", avšak ani toto nepomohlo a do MySQL jsem ji nepřevedl.
Nakonec jsem zjistil, že na vině nebyla písmena s diakritikou, nýbrž m2 (symbol čtverečních metrů s dvojkou v horním indexu) a dále dlouhá pomlčka namísto krátké. Když jsem tyto znaky nahradil, tabulka jak v Excelu, tak i v Accessu se převedla do MySQL bez jediné chyby.