Заменить петлю в VBA - PullRequest
       6

Заменить петлю в VBA

2 голосов
/ 07 марта 2012

У меня есть файлы csv с некоторыми специальными символами, такими как «è» вместо «é» (файл csv написан на французском языке).В общем, я ссылался на все специальные символы и пытаюсь написать код на 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

Есть идеи?Спасибо

1 Ответ

4 голосов
/ 07 марта 2012

Предположим, у вас есть что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...