这听起来很容易,但我是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.
答案 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
这是我使用的测试文件:
这是输出,正确地分为两列: