2017-12-26 7 views
0

이 질문을 클릭 해 주셔서 감사합니다. 필자의 vba 코드에이 데이터 세트를 배치하는 데 문제가있었습니다. 나는 항상 '오버플로'파일을 얻은 다음 '이미 열어 둔 파일'오류를 계속 발생시킵니다. 내가 사용하고있는 데이터 세트는 시간이 지남에 따른 전력 소비의 데이터 기록입니다. 그리고이 데이터 세트는 7 개의 배열에 저장됩니다. 이것들이 데이터 세트입니다.데이터 세트의 VBA 입력

https://data.world/databeats/household-power-consumption

내 코드에 어떤 문제가 있습니까? 어떤 제안? 감사합니다.

내 코드는 지금까지

Dim ID(50) As String, Day(50) As Date 
Dim Time(50) As Integer, GlobelActivePower(50) As Integer 
Dim Sub1(50) As Integer, Sub2(50) As Integer, Sub3(50) As Integer 
Public N As Integer 

Sub ReadFileSmall() 
Dim Infile As String 
Infile = ThisWorkbook.Path & "\Power_smallDataset.csv" 
    Open Infile For Input As #1 
    N = 0 

    Do Until EOF(1) 
     Input #1, ID(N), Day(N), Time(N), GlobelActivePower(N), Sub1(N), 
     Sub2(N), Sub3(N) 
     N = N + 1 
    Loop 

Range("A4").Select 
For indx = 0 To N - 1 
    ActiveCell.Offset(indx, 0).Value = ID(indx) 
    ActiveCell.Offset(indx, 1).Value = Day(indx) 
    ActiveCell.Offset(indx, 2).Value = Time(indx) 
    ActiveCell.Offset(indx, 4).Value = GlobelActivePower(indx) 
    ActiveCell.Offset(indx, 5).Value = Sub1(indx) 
    ActiveCell.Offset(indx, 6).Value = Sub2(indx) 
    ActiveCell.Offset(indx, 7).Value = Sub3(indx) 
Next 

Close #1 

End Sub 

답변

0

배열의 크기는 이상하다. 다음은 csv 파일의 데이터입니다.

Sub ReadFileSmall() 
    Dim Infile As String 
    Dim vDB 
    Infile = ThisWorkbook.Path & "\Power_smallDataset.csv" 

    Workbooks.Open Filename:=Infile, Format:=2 
    With ActiveSheet 
     vDB = .UsedRange 
    End With 
    ActiveWorkbook.Close (0) 

    Range("A4").Resize(UBound(vDB, 1), ubouns(vDB, 2)) = vDB 
End Sub 
관련 문제