2016-12-05 9 views
-1

단어 사이에 공백이있는 CSV 파일의 배열과 모든 공백을 하이픈으로 바꾼 후에 채우려는 두 번째 파일의 배열에 채우려고합니다.단어 vba 텍스트 사이에 배열 바꾸기

그래서 array1의 내용은 "Hi there"와 같고 array2의 내용은 "Hi-there"처럼 보입니다.

replace (text, old, new)를 사용해 보았지만 문제가 있습니다. 다른 하위가없는 독립형 매크로에서는 작동합니다. 다른 서브 우퍼가있는 경우 그것을하지 않습니다, 던지고 및 오류가

"인수가 잘못되었거나 잘못된 속성이 할당 잘못된 번호가"이것은 내가있어 코드입니다 말 :

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

"replace"라는 함수를 정의 했습니까? 이미 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

쉼표로 구분 된 파일을 사용하여 검색 용어를 보관하는 자동화 된 찾기 및 바꾸기 매크로를 만들려고합니다. 일단 배열로 읽어 들인 후에는 매크로가 각 검색 용어를 반복하도록하여 사용자가 직접 찾아서 바꾸지 않아도됩니다. –