Visual Basics Excel txt输入文件

时间:2013-03-13 05:51:29

标签: excel excel-vba outlook vba

行“输入#1,数字(行,列)”给我一个运行时错误9.任何想法?代码中的注释解释了应该发生的事情。

Sub InputImage()
'brings a text file to the workbook

Dim Row As Long, Column As Long, Nrow As Long, Ncolumn As Long

    Call MsgBox("Navigate to a folder that contains the file image.txt in the 00_18 folder")
    '   The next statement will open a dialogue box that will let
    '   the user navigate to any folder on their system
    Call Application.GetOpenFilename
Open "image.txt" For Input As #1

Dim Buffer As String
Line Input #1, Buffer 'read a whole line of characters from
    'file #1 into the string variable buffer

Line Input #1, Buffer
Input #1, Buffer, Nrow
Input #1, Buffer, Ncolumn

Dim Numbers(1 To 4, 1 To 4) As Long
For Row = 1 To Nrow
    For Column = 1 To Ncolumn
        Input #1, Numbers(Row, Column)
    Next Column
Next Row

Close #1

End Sub

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

Option Base 1
Sub InputImage()
'brings a text file to the workbook
    Dim j As Integer, i As Integer
    Dim Row As Long, Column As Long, Nrow As Long, Ncolumn As Long

    Call MsgBox("Navigate to a folder that contains the file image.txt in the 00_18 folder")
    '   The next statement will open a dialogue box that will let
    '   the user navigate to any folder on their system
    Call Application.GetOpenFilename


    Dim FileNum As Integer
    Dim DataLine As String

    FileNum = FreeFile()
    Open "image.txt" For Input As #FileNum


    j = 1
    While Not EOF(FileNum)
        Line Input #FileNum, DataLine    ' read in data 1 line at a time
        ' decide what to do with dataline,
        ' depending on what processing you need to do for each case
        'you can use split function to split DataLine with required delimiter which will return you an array.
        a = Split(DataLine, vbTab)

        For i = 1 To UBound(a)
            Cells(j, i).Value = a(i)
        Next
        j = j + 1
    Wend


End Sub

假设你的image.txt如下图所示。

enter image description here