'********************************************************************************************************** ' Nazwa: poprawnaNazwaArkusza ' Autor: mielk | 2012-03-26 ' ' Opis: Funkcja sprawdza czy przekazany ciąg tekstowy odpowiada wymogom, jakie muszą ' spełniać nazwy arkuszy Excela: ' * nie może być pusta, ' * jej długość nie może przekraczać 31 znaków, ' * nie może zawierać żadnego z niedozwolonych znaków : ? / \ * [ ] ' Jeśli podana nazwa nie spełnia któregoś z tych wymogów, jest ona odpowiednio ' dostosowywana. ' ' Argumenty: ' name Tekst sprawdzany pod kątem poprawności jako nazwa arkusza. ' ' Zwraca: ' String Podana nazwa przekształcona w taki sposób, by była prawidłową nazwą arkusza Excela. ' * Jeżeli wejściowa nazwa spełnia wymogi prawidłowej nazwy arkusza, jest ona ' zwracana w całości w nienaruszonym stanie. ' * Jeżeli nazwa wejściowa jest pusta, zwracany jest znak podkreślenia (_). ' * Jeżeli nazwa wejściowa jest dłuższa niż dopuszczalne 31 znaków, nadmiarowa ' część nazwy zostaje ucięta. ' * Jeżeli nazwa wejściowa zawiera niedopuszczalne znaki : ? / \ * [ ], są one ' z niej usuwane. ' ' ' --- Zmiany ---------------------------------------------------------------------------------------------- ' 2012-03-26 mielk Utworzenie funkcji. '********************************************************************************************************** Public Function poprawnaNazwaArkusza(name As String) As String Const NAZWA_METODY As String = "poprawnaNazwaArkusza" '------------------------------------------------------------------------------------------------------ Const NIEDOZWOLONE_ZNAKI As String = ":?/\*[]" '------------------------------------------------------------------------------------------------------ Dim intZnak As Integer Dim strZnak As String Dim strNiedozwoloneZnaki As String '------------------------------------------------------------------------------------------------------ 'Funkcja przechodzi przez wszystkie znaki w oryginalnej nazwie i usuwa z niej niedozwolone znaki. ---| For intZnak = 1 To VBA.Len(name) '| strZnak = VBA.Mid$(name, intZnak, 1) '| '| '--------------------------------------------------------------------------------------------| '| If VBA.InStr(1, strNiedozwoloneZnaki, strZnak) = 0 Then '| '| poprawnaNazwaArkusza = poprawnaNazwaArkusza & strZnak '| '| End If '| '| '--------------------------------------------------------------------------------------------| '| '| Next intZnak '---------------------------------------------------------------------------------------| 'Sprawdza długość nazwy arkusza po usunięciu niedozwolonych znaków. Jeżeli jest ona za długa, -------| 'nadmiarowe znaki są ucinane. '| Select Case VBA.Len(poprawnaNazwaArkusza) '| Case Is > 31 '| poprawnaNazwaArkusza = VBA.Left$(poprawnaNazwaArkusza, 31) '| Case 0 '| poprawnaNazwaArkusza = "_" '| End Select '-----------------------------------------------------------------------------------------| End Function