2013-01-19 1 views
0

단락의 문자열을 사용하여 Microsoft Word VB에서 새 디렉토리를 만들고 싶었지만 전체 단락이었습니다. 끝 줄 문자가 포함되어 있어야 경로 이름 오류가 발생하고 Mid을 사용하여 range.text에서 마지막 문자를 제거했습니다. 몇 가지 코드가 있습니다range.text를 사용하여 Visual Basic에서 디렉토리 만들기

Sub newDir() 
    'Take the text in a paragraph selected by index and create a folder 
    'MkDir ("C:\MainFolder\" & Mid(ActiveDocument.Paragraphs(2).Range.Text, 1, Len(ActiveDocument.Paragraphs(2).Range.Text) - 1)) 
End Sub 

이렇게하면됩니다. 누구든지 그러한 캐릭터의 문자열을 청소하는 더 좋은 방법을 알고 있습니까?

답변

2

더 일반적으로 말해서 정리를 수행하고 폴더 이름이 될 문자열에서 허용되지 않는 문자를 제거해야합니다. 비슷한 상황에서 같은 문제가 발생하면 Outlook에서 Subject를 사용하여 수백 개의 전자 메일을 저장합니다. , 분명한 이유가에 불가능 따옴표의

RegX_NAChars.Pattern = "[\" & Chr(34) & "\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]" 

Chr(34)된다

  • 는 다음과 같은 패턴을 사용하여 받아 들일 수없는 문자의 목록을 작성 : 아래 정규식를 사용하여 모두이 방법은 있습니다 그것을 직접 기재하십시오. 특별한 경우에는 "[start of pattern]" & "\" & Chr(10) & "\" & Chr(13) & "[rest of pattern]"을 사용하여 "새 줄"문자라고도하는 목록에 추가해야합니다. 패턴의 문자 순서는 중요하지 않습니다.

    RegX_NAChars.Pattern = "[^\w \-.]" 
    

위의 패턴은 모든 하지만 라틴어 문자, 숫자, 공간, 점을 의미한다 :

  • 반대의 접근 방식은 나머지는 모두 허용되는 문자의 목록을 선언하고 제거하다 하이픈은 대체되거나 제거됩니다.

    두 가지 접근법은 자신의 장점과 단점을 가지고 있지만, 그러나 나는 주된 이유는 생각 :

    1. 허용되지 않는 문자이 목표는 가능한 한 원래의 문자열을 유지하는 경우에 사용되어야한다.
    2. 허용되는 문자 이름이 중요하지 않은 경우 목록을 사용해야하지만 오류없이 파일을 저장하면 # 1 목표가됩니다.

    이 정규식 사용을위한 코드의 관련 부분은 다음과 같습니다

    Dim RegX_NAChars As Object 
    
        Set RegX_NAChars = CreateObject("VBScript.RegExp") 
        RegX_NAChars.Pattern = [**use any of the above**] 
        RegX_NAChars.IgnoreCase = True 
        RegX_NAChars.Global = True 
        ........[**your code**]........ 
        RegX_NAChars.Replace(String_to_Cleanup, "") 
    

    RegX_NAChars.Replace

    위의 정의 된 대체 문자열과 일치하는 모든 문자를 대체합니다. 제 경우에는 ""입니다 - 빈 문자열은 문자가 버려진다는 의미입니다. 무엇이든 바꿉니다 (물론 폴더 이름 문자에도 허용되어야합니다 (예 : _ 사용).

    는 정규식에 대해 자세히 알아보기 : http://www.jose.it-berater.org/scripting/regexp/regular_expression_syntax.htm 위의 정규식 링크에 추가

+0

, 여기에 엑셀에 특정한 몇 가지 예와 다른 [포스트] (http://stackoverflow.com/q/22542834/2521004)입니다. –