使用VB 2010 express将文本文件中的数据粘贴到excel

时间:2013-04-17 15:50:31

标签: vb.net excel

这听起来很容易,但我是vb编程的新手。我有一个包含11行的文本文件,两列之间用39个空格分隔。现在我正在尝试阅读此文件,复制它&粘贴到Excel工作表中。这是我到目前为止的代码:

Imports System.IO

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oExcel As Object
        Dim oBook As Object
        Dim oRow As Int16 = 0

        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add

        'Read input .txt file line-by-line, Copy to Clipboard & Paste to Excel

        Using rdr As New System.IO.StreamReader("C:\Temp\ONI.txt")
            Do While rdr.Peek() >= 0
                Dim InputLine As String = rdr.ReadLine
                oRow = oRow + 1
                System.Windows.Forms.Clipboard.SetDataObject (InputLine)
                oBook.Worksheets(1).Range("A" + oRow.ToString).Select()
                oBook.Worksheets(1).Paste()
            Loop
            rdr.Close()
        End Using

        oExcel.Visible = True
        'oExcel.SaveAs("C\Temp\test.xls")
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
    End Sub

End Class

这正在开启excel工作簿的程度。数据被粘贴到A1到A11,即行为11(这是可以的),但列只有1(它应该在A和B列中)。我知道这很容易,请指导我。

此外,代码会在“另存为”行(我已评论过)停止。运行时显示错误Public member 'SaveAs' on type 'ApplicationClass' not found.

1 个答案:

答案 0 :(得分:1)

您应该oBook.SaveAs(...),而不是保存Excel.Application,只保存工作簿。

要导入文本,为什么不使用Workbooks.OpenText方法呢?通过一些调整,这应该允许您以所需的格式打开分隔文件。这样可以避免在导入文本到列之后尝试进行文本到列的麻烦,以及必须使用剪贴板的麻烦。

例如,这会在Excel工作簿中打开一个文本文件,将空格视为分隔符,将连续分隔符视为一个,因此它应该正确地拆分列。

Sub OpenTextFile()
Dim wbText As Workbook
Dim sFName As String ' file name & path'

sFName = Application.GetOpenFilename()
Workbooks.OpenText Filename:=sFName _
    , Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=True, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True

Exit Sub
End Sub

这是我使用的测试文件:

Text file with consecutive delimiters

这是输出,正确地分为两列:

Excel can open the text delimited file