2012-03-07 3 views
2

'& egrave;와 같은 특수 문자가 포함 된 CSV 파일이 있습니다. 'é'대신에 (csv 파일은 프랑스어로되어 있습니다.) 그래서 기본적으로 모든 특수 문자를 참조하고 VBA를 사용하여 코드를 작성하려고합니다. 불행히도 그것은 작동하지 않습니다. 내 코드 :VBA 루프 바꾸기

Sub ReplaceTest() 

' I referenced 35 issues 

    Dim replaceWhat(35) As Variant 
    Dim replaceBy(35) As Variant 
' This is where I reference the special caracters and link them to the good ones 
    Application.Sheets("SpecialCaracters").Select 
    replaceWhat(35) = Application.Range("A1:A35").Value 
    replaceBy(35) = Application.Range("B1:B35").Value 

    Dim i As Integer 
    For i = 0 To 34 
     Application.Sheets("Sheet1").Select 
     ActiveSheet.Columns("A:AH").Select 

     Selection.Replace What:=remplacerWhat(i), Replacement:=remplacerBy(i), LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
    Next i 
End Sub 

아이디어가 있으십니까? 덕분에이 같은 것을 가진 가정

+0

왜 변경하려고합니까? 그들은 올바른 형태로 보관되어서는 안됩니까? – bernie

+0

"작동하지 않음"을 정의하십시오. 오류가 있습니까? –

답변

4

:

SpecialCharacters Sheet 
\ | A | B 
1 | à | a 
2 | é | e 
3 | ó | o 

당신은 다른 시트 또는 범위의 발생을 모든 특수 문자 행을 반복하고 대체하기 위해 다음과 같은 방법을 사용할 수 있습니다.

Option Explicit 

Sub ReplaceSpecialCharacters(ReplaceRange As Range) 
    Dim SpecialCharSheet As Worksheet 
    Dim replaceWhat As String 
    Dim replaceBy As String 
    Dim RowIndex As Long 

    Set SpecialCharSheet = Sheets("SpecialCharacters") 
    For RowIndex = 1 To SpecialCharSheet.UsedRange.Rows.Count 
     replaceWhat = SpecialCharSheet.Cells(RowIndex, 1).Value 
     replaceBy = SpecialCharSheet.Cells(RowIndex, 2).Value 

     ReplaceRange.Replace What:=replaceWhat, Replacement:=replaceBy, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
    Next RowIndex 
End Sub 

Sub ReplaceSheet1() 
    ' If using hard coded range 
    ReplaceSpecialCharacters Sheet1.Columns("A:AH") 

    ' If using Selection 
    ReplaceSpecialCharacters Selection 
End Sub 
+0

감사합니다. Ryan! 이제는 완벽하게 작동합니다. 훨씬 더 융통성있는 – fabco63

관련 문제