2015-02-06 2 views
0

이진 액세스는 특정 문자열 </p> <p>

Sub ReadEntireFileAndPlaceOnWorksheet() 
 
    Dim X As Long, FileNum As Long, TotalFile As String, FileName As String, Result As Variant, Lines() As String 
 
    FileName = "C:\Users\Mohamed samatar.DSSE-EMEA\Documents\EQVL\Test\WHVP113_140910_TTinsug_TT_299Data_PUoff_WOT-TakeOff_NotKickDown_gearD_FelLambda.dat" 
 
    FileNum = FreeFile 
 
    Open FileName For Binary As #FileNum 
 
    TotalFile = Space(LOF(FileNum)) 
 
    Get #FileNum, , TotalFile 
 
    Close #FileNum 
 
    Lines = Split(TotalFile, vbNewLine) 
 
    ReDim Result(1 To UBound(Lines) + 1, 1 To 1) 
 
    For X = 1 To UBound(Result) 
 
    Result(X, 1) = Lines(X - 1) 
 
    Next 
 
    Range("A1").Resize(UBound(Result)) = Result 
 
End Sub​
내가 메모장에서 각 파일을 열려고 및 추출, 그러나 그들은 매우 큰이 될 수있는 .dat 형식으로,이 파일은 몇 가지 중요한 정보가 포함 된 일부 파일이를 찾고, 읽고 내가 필요로하는 정보는 메모장에 각 파일을 여는 데 오랜 시간이 걸리기 때문에 효율적이지 않습니다. 분명히 대용량 파일을 열고이 파일을 매우 빨리 읽을 수있는 바이너리 액세스 읽기 기능을 접했습니다. 정보의 특정 줄을 찾고/얻는 방법을 궁금해하고 있습니다. 찾기 기능을 말하기 위해 비슷한 기능을 사용할 수 있습니까? 아니면 정보를 얻는 다른 방법이 제가 지금까지 가지고있는 것입니다. 파일 유형을 알려주는 것입니다. 기본적으로 특정 문자열 값을 검색 할 수 있기를 원합니다. 또는 Excel의 모든 텍스트를 덤프하고 거기에서 정렬 할 수 있다면 모든 지침이 유용합니다.

+0

확인 [여기] (HTTP를 당신이 "찾기"와 같은 일반 엑셀 기능을 사용할 수 있습니다 Excel에서 데이터를 일단 : // bytes /topic/access/insights/953655-vba-standard-text-file-io-statements) 기본 I/O 함수의 경우 파일을 한 줄씩 읽고 기본 문자열 함수 또는 RegEx를 사용하여 찾고있는 데이터 또는 전체 파일을 배열로 읽어 들이고 반복하십시오. –

+0

신속한 응답을 주셔서 감사합니다. – Samatar

+0

안녕 데이비드, 올바른 방향으로 나를 가리킬 수있는 기회, 나는 문서를 통해 방금 파일을 배열의 예를 들어 갔을거야? 배열로 읽을 수 있다면 엑셀로 덤프하고 검색을 수행 할 수 있습니다. 작은 의미는 거의 없습니다. 감사? – Samatar

답변

2

다음은 두 가지 예입니다.

Option Explicit 
Sub testReadLine() 
    Dim filename As String 
    Dim FF As Integer 
    Dim line As String 
    Dim i as Long 

    filename = "C:\yourfilename.txt" '### MODIFY AS NEEDED 

    FF = FreeFile 
    Open filename For Input As FF 
    Do While Not EOF(FF) 
     Line Input #FF, line 

     Range("A1").Offset(i).Value = i 
     i = i + 1 
    Loop 
    Close FF 

End Sub 

번째 예는 전체를 판독한다 : 첫 번째는 각각 라인 위해 A2, A3 등 번까지 다음 파일 셀 A1부터 워크 시트에 인쇄의 각 행을 판독하고, 파일을 문자열 변수로 변환 한 다음 Split 함수를 사용하여 해당 문자열을 줄 구분 기호 (vbCRLF으로 가정)를 기반으로 문자열 배열로 변환합니다.

이 사람은 빨리해야하고, 물론 당신은 등,

Option Explicit 
Option Base 0 
Sub testReadAll() 

    Dim filename As String 
    Dim FF As Integer 
    Dim text As String 
    Dim buffer As Long 
    Dim txtArray() As String 

    filename = "C:\yourfilename.txt" '### MODIFY AS NEEDED 

    FF = FreeFile 
    Open filename For Input As FF 
    buffer = LOF(FF) 
    text = Input(buffer, FF) 
    Close FF 

    'Put the text into an array, split by the LineFeed character: 
    txtArray = Split(text, vbCrLf) 

    'Print to the worksheet: 
    Range("A1").Resize(Ubound(txtArray)).Value = Application.Transpose(txtArray) 

End Sub 
+0

응답 해 주셔서 대단히 감사합니다. 파일 형식이 .dat 파일이며 현재 바이너리에서 일반 텍스트로 변환해야하는 곳을 보았습니다. 이 경우 파일에 약 17MB의 데이터가 있지만 번호가 0에서 4로 출력되는 것처럼 보이므로 어떻게 읽습니까? – Samatar

+0

새로운 질문 인 것처럼 들리지만, 바이트 배열을 문자열로 변환 할 수있는 문자열 변환 함수가 있습니다. 죄송합니다. 자정입니다. 여기서는 자정입니다. 현재 시간. 다른 사람들이 귀하를 도울 수 있도록 새로운 질문을하십시오. –

+0

유용 할 수 있습니다. https://msdn.microsoft.com/en-us/library/office/gg264628%28v=office.15%29.aspx –

관련 문제