2014-04-19 3 views
0

매크로를 사용하여 CSV 파일을 새 워크 시트에 복사하는 경우이 부분이 잘 작동합니다. 하지만, 내 csv 파일은 구분 기호로 세미콜론을 사용하고, 나는 다음과 같은 코드를 사용하는 경우, 텍스트 컬럼으로 분리하지 않습니다세미콜론 구분 기호가있는 VBA 복사 CSV 파일

Sub Bam() 
    Dim FilesToOpen 
    Dim wkbAll As Workbook 
    Dim wkbTemp As Workbook 
    Dim newSheet As Worksheet 
    FilesToOpen = Application.GetOpenFilename _ 
    (FileFilter:="Text Files (*.csv), *.csv", Title:="Text Files to Open") 
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen) 
    wkbTemp.Sheets(1).Cells.Copy 
    Set newSheet = ThisWorkbook.Sheets.Add 
    With newSheet 
     .Name = wkbTemp.Name 
     .PasteSpecial 
    End With 
    Application.CutCopyMode = False 
    wkbTemp.Close 
End Sub 

내가 구분 기호로 세미콜론을 설정하려면 다음 명령을 사용하려고 : 내 매크로를 사용하려고하면서

With newSheet 
    .Name = wkbTemp.Name 
    .PasteSpecial 
    .TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Semicolon:=True 
End With 

또는

Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Delimiter:=4) 

하지만, 첫 번째 경우에, 다음과 같은 오류 메시지가 나타납니다

두 번째 경우 .TextToColumns

Compile error: 
Method or data member not found. 

을 강조 는

, 아무것도 모든 텍스트는 여전히 하나의 열에 표시, 발생하지 않습니다.

누구나 세미콜론을 구분 기호로 설정하는 아이디어가 있습니까?

답변

0

나는 당신의 방법을 좋아, 내가 공부 것이다. 그동안 나는 그것을 할 방법을 찾았습니다! I * .txt를 내 *의 .csv 파일의 확장자를 변경, 약간 같은 코드를 변경 : 그것은 내가 지금 * .CSV을 생성하는 내 스크립트를 수정해야로서, 원하는 것을 정확히 아니다

Sub Bam() 
    Dim FilesToOpen 
    Dim wkbAll As Workbook 
    Dim wkbTemp As Workbook 
    Dim newSheet As Worksheet 
    FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open") 
     Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Format:=4) 
     wkbTemp.Sheets(1).Cells.Copy 
     Set newSheet = ThisWorkbook.Sheets.Add 
     With newSheet 
      .Name = wkbTemp.Name 
      .PasteSpecial 
     End With 
     Application.CutCopyMode = False 
     wkbTemp.Close 
End Sub 

파일,하지만 그것은 작동합니다!

당신의 생각에 감사드립니다. 나는 그것을 심각하게 연구 할 것이고, 아마 제 스크립트를 수정할 필요가 없을 것입니다. 모든 경우에, 고마워, 나는 항상 일하는 뉴스 방법에 대해 궁금해하고 항상 내 코드를 개선하고 싶다! :) 고맙습니다.

0

내가 첫 번째 열 로 데이터를 가져오고 그 데이터를 구문 분석 감사합니다

Sub Bam() 
    Dim FilesToOpen, v As Variant 
    Dim wkbAll As Workbook 
    Dim wkbTemp As Workbook 
    Dim newSheet As Worksheet, N As Long, J As Long 
    FilesToOpen = Application.GetOpenFilename _ 
    (FileFilter:="Text Files (*.csv), *.csv", Title:="Text Files to Open") 
    Close #1 
    Open FilesToOpen For Input As #1 
    J = 1 
    Do While Not EOF(1) 
      Line Input #1, TextLine 
      Cells(J, 1) = TextLine 
      J = J + 1 
    Loop 
    Close #1 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For J = 1 To N 
     v = Cells(J, 1).Value 
     If InStr(v, ";") > 0 Then 
      ary = Split(v, ";") 
      For i = LBound(ary) To UBound(ary) 
       Cells(J, i + 1).Value = ary(i) 
      Next i 
     End If 
    Next J 
End Sub 
+0

답변 해 주셔서 감사합니다. 약간 무겁지 만 훌륭합니다! :) – Quentin

관련 문제