Lấy handle (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

challenge98

Thành viên chính thức
Tham gia
21/6/09
Bài viết
90
Được thích
5
Từ VB hoặc VBA Có ai biết cách lấy handle của một file có đường dẫn "C:\vidu.txt"
giúp mình với thanks!
 
Không phải mình chỉ muốn lấy handle đó để lấy dữ liệu của nó thông qua handle thôi.
Hiện tại mình vẫn chưa biết cách lấy handle của file đó thế nào?
 
Upvote 0
Bạn đọc thử nội dung này, cốt yếu dùng EOF:

The macros below can be used to replace text in a text file,
e.g. when you want to change a column separator in a text file
before you import it into an Excel worksheet or after you export a worksheet to a text file.

Mã:
Sub ReplaceTextInFile(SourceFile As String, _
    sText As String, rText As String)
Dim TargetFile As String, tLine As String, tString As String
Dim p As Integer, i As Long, F1 As Integer, F2 As Integer
    TargetFile = "RESULT.TMP"
    If Dir(SourceFile) = "" Then Exit Sub
    If Dir(TargetFile) <> "" Then
        On Error Resume Next
        Kill TargetFile
        On Error GoTo 0
        If Dir(TargetFile) <> "" Then
            MsgBox TargetFile & _
                " already open, close and delete / rename the file and try again.", _
                vbCritical
            Exit Sub
        End If
    End If
    F1 = FreeFile
    Open SourceFile For Input As F1
    F2 = FreeFile
    Open TargetFile For Output As F2
    i = 1 ' line counter
    Application.StatusBar = "Reading data from " & _
        TargetFile & " ..."
    While Not EOF(F1)
        If i Mod 100 = 0 Then Application.StatusBar = _
            "Reading line #" & i & " in " & _
            TargetFile & " ..."
        Line Input #F1, tLine
        If sText <> "" Then
            ReplaceTextInString tLine, sText, rText
        End If
        Print #F2, tLine
        i = i + 1
    Wend
    Application.StatusBar = "Closing files ..."
    Close F1
    Close F2
    Kill SourceFile ' delete original file
    Name TargetFile As SourceFile ' rename temporary file
    Application.StatusBar = False
End Sub

Private Sub ReplaceTextInString(SourceString As String, _
    SearchString As String, ReplaceString As String)
Dim p As Integer, NewString As String
    Do
        p = InStr(p + 1, UCase(SourceString), UCase(SearchString))
        If p > 0 Then ' replace SearchString with ReplaceString
            NewString = ""
            If p > 1 Then NewString = Mid(SourceString, 1, p - 1)
            NewString = NewString + ReplaceString
            NewString = NewString + Mid(SourceString, _
                p + Len(SearchString), Len(SourceString))
            p = p + Len(ReplaceString) - 1
            SourceString = NewString
        End If
        If p >= Len(NewString) Then p = 0
    Loop Until p = 0
End Sub

Sub TestReplaceTextInFile()
    ReplaceTextInFile ThisWorkbook.Path & _
        "\ReplaceInTextFile.txt", "|", ";"
    ' replaces all pipe-characters (|) with semicolons (;) 
End Sub

Trích dẫn: http://www.exceltip.com/st/Replace_text_in_a_text_file_using_VBA_in_Microsoft_Excel/494.html
 
Upvote 0
Cảm ơn bạn nhưng hình như bạn hiểu nhầm ý mình thì phải ý mình là lấy handle của file đó mà.
 
Upvote 0
Cảm ơn bạn nhưng hình như bạn hiểu nhầm ý mình thì phải ý mình là lấy handle của file đó mà.

Nếu lấy handle để điều khiển thì nó phải thuộc dòng office hoặc môi trường có hỗ trợ VBA (tức là có đối tượng Automation). Còn không phải dùng kiểu truy cập trên thôi (nhiều người dùng trong Nopad).

Phương thức AppActive cũng giải quyết được nhưng chỉ thuần túy chuyển sang cửa sổ mong muốn thôi.
 
Upvote 0
Mình không hiểu lắm về vấn đề này nhờ bạn chỉ giúp tận tình.
Dùng trong notpad là dùng như thế nào? bạn nói rõ hơn được không?
Cụ thể file này mình là file txt có cần chuyển sang file office không?
 
Upvote 0
Mình đã vào google tìm được đoạn code này sau khi mài rũa nó chạy được nhưng thường thì handle giá trị nó rất nhiều số nhưng ở đây chỉ có = 1 hoặc = -1 là sao nhỉ?
 

File đính kèm

Upvote 0
Mình đã vào google tìm được đoạn code này sau khi mài rũa nó chạy được nhưng thường thì handle giá trị nó rất nhiều số nhưng ở đây chỉ có = 1 hoặc = -1 là sao nhỉ?

result = OpenFile(strSearchFile, strucFname, OF_EXIST)
Code bạn đã dùng kiểu OF_EXIST, với kiểu này, hàm OpenFile sẽ kiểm tra sự tồn tại của file trên đường dẫn, kết quả trả về -1 nếu không tìm thấy, là 1 nếu tìm được. Code trên bạn chỉ sử dụng để kiểm tra sự tồn tại của file chứ không thể đọc và ghi dữ liệu được. Bạn phải làm thêm như sau

Bổ sung khai báo vào Module1
Mã:
Public Const OF_READWRITE As Long = &H2

Câu lệnh mở file sửa lại là
Mã:
result = OpenFile(strSearchFile, strucFname, OF_READWRITE)

Muốn sử dụng tốt các hàm API, bạn cần đọc kỹ tài liệu MSDN về hàm đó.
 
Upvote 0
Cảm ơn anh em làm được rồi đọc được dữ liệu nhưng chưa biết chuyển nó vào mảng và đưa vào Excel như thế nào nhờ anh giúp đỡ.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom