2016-12-05 11 views
-1

Я пытаюсь заполнить массив из CSV-файла, который содержит пробелы между словами и второй, который я пытаюсь заполнить, после того как я заменил все пространства дефисом.слово vba текст, заменяющий между массивами

Таким образом, содержимое массива выглядит так: «Привет там», а содержимое массива выглядит так «Привет-там».

Я пробовал использовать замену (текст, старый, новый), но я сталкиваюсь с проблемами. В автономном макросе без других субмарин работает. Если есть какие-либо другие подводные лодки это не делает, подбрасывая и ошибки говоря «неверное число аргументов или присвоение недействительного имущества»

Это код, который я получил:

Private Sub import_csv() 

Dim file_name As String 
Dim fnum As Integer 
Dim whole_file As String 
Dim lines As Variant 
Dim one_line As Variant 
Dim num_rows As Long 
Dim num_cols As Long 
Dim the_array() As String 
Dim imported_array() As String 
Dim txt As String 
Dim R As Long 
Dim C As Long 

    file_name = "test.csv" 

    'load the file 
    fnum = FreeFile 
    Open file_name For Input As fnum 
    whole_file = Input$(LOF(fnum), #fnum) 
    Close fnum 

    'Break the file into lines 
    lines = Split(whole_file, vbCrLf) 

    'Dimension the array 
    num_rows = UBound(lines) 
    one_line = Split(lines(0), ",") 
    num_cols = UBound(one_line) 
    ReDim the_array(num_rows, num_cols) 
    ReDim imported_array(num_rows, num_cols) 

    'Copy the data into the arrays 
    For R = 0 To num_rows 
     If Len(lines(R)) > 0 Then 
      one_line = Split(lines(R), ",") 
      For C = 0 To num_cols 
       imported_array(R, C) = one_line(C) 
       txt = one_line(C) 

       txt = replace(txt, " ", "-") '<----- problem line 

       the_array(R, C) = txt 
      Next C 
     End If 
    Next R 
End Sub 
+0

Вы определили функцию с именем «заменить»? Существует уже метод с этим именем в VBA ... –

+0

Я думаю, что узнал, в чем проблема. Я попытался использовать VBA.Replace, и это сработало. Поэтому я просмотрел ссылки, но не смог найти отсутствующих:/ –

ответ

0

Извините, но это звучит совершенно странно для меня. Вы пытаетесь использовать Word для поиска/замены в CSV-файле? Это оно? Зачем вам это делать? Вот типичная находка/замена в документе Word.

Sub FindAndReplaceFirstStoryOfEachType() 
    Dim rngStory As Range 
    For Each rngStory In ActiveDocument.StoryRanges 
    With rngStory.Find 
     .Text = "find text" 
     .Replacement.Text = "I'm found" 
     .Wrap = wdFindContinue 
     .Execute Replace:=wdReplaceAll 
    End With 
    Next rngStory 
End Sub 

Это обновление вещей в теле документа Word. Теперь, если вы хотите найти/заменить в файле данных, будь то файл CSV, TXT или Excel, вероятно, вы должны использовать Excel для этой задачи.

Sub Update_CSV() 
    Open "C:\test.csv" For Input As #1 
    c0 = Input(LOF(1), #1) 
    Close #1 

    Open "C:\test.csv" For Output As #1 
    Print #1, Replace(c0, "OLD TEXT", "NEW TEXT") 
    Close #1 
End Sub 
+0

Я пытаюсь создать автоматизированный поиск и замену макроса, используя файл с разделителями-запятыми, чтобы сохранить условия поиска. План состоял в том, что после того, как они были прочитаны в массиве, чтобы позволить макросу проходить через каждый период поиска, чтобы пользователю не приходилось вручную находить и заменять. –