![](/img/trans.png)
[英]How to sort rows in a excel sheet and print to a file using VB script?
[英]Using VB to convert Excel rows to a file
对VB有点缺乏经验,所以我希望有人可以帮助解决一个简单的问题!
基本上,我需要为Excel电子表格的每一行生成一个文本文件(扩展名为.exp)。 但是,列数和行数预先未知,格式需要相当具体。 例如,给定以下Excel格式:
Col1 | Col2 1 | 2 8 | 9 17 | 46
我希望产生3个文件。 第一个文件如下:
Col1 1 Col2 2
第二:
Col1 8 Col2 9
第三:
Col1 17 Col2 46
使用VB有一种简单的方法吗?
我玩VBA已经有一段时间了,但这样的事情应该有效:
Dim fso As New FileSystemObject
Dim stream As TextStream
Dim iLoop As Integer
iLoop = 1
While Sheets("Sheet1").Range("A" & iLoop) <> ""
Set stream = fso.CreateTextFile("C:\Row" & iLoop & ".txt", True)
stream.WriteLine "Col1 " & Sheets("Sheet1").Range("A" & iLoop)
stream.WriteLine "Col2 " & Sheets("Sheet1").Range("B" & iLoop)
stream.Close
iLoop = iLoop + 1
Wend
可能需要一些调整,我没有测试过,但这是基本的想法。
我从不使用Excel,也没有副本来测试任何代码,所以请耐心等待。
VBScript的基本思想(独立的.vbs文件)......
'connect to Excel
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = True
'open the file
XLApp.DisplayAlerts = False
Set XLBook = XLApp.WorkBooks.Open("c:\path_to\my.xls")
XLApp.DisplayAlerts = True
'if you know the Worksheet name:
sSheetName = "MySheetName"
Set XLSheet = XLBook.Sheets.Item(sSheetName)
'else use index:
Set XLSheet = XLBook.Worksheets(1)
'or if you want to process all sheets:
For Iter = 1 To XLBook.Worksheets.Count
Set XLSheet = XLBook.Worksheets(Iter)
...
Next
'you can use XLSheet.Columns.Count to iterate
'or if the columns names are known:
Set Col1 = XLSheet.Columns("Col1")
Set Col2 = XLSheet.Columns("Col2")
'or get Range:
Set Range = XLSheet.Columns("Col1:Col2")
'same as above:
Set Range = XLSheet.Range("Col1:Col2")
'vbs FileSystemObject:
Set fso = CreateObject("Scripting.FileSystemObject")
iLoop = 1 'to enumerate file names
intRow = 2 '?... not sure about this
Do While Range.Cells(intRow,1).Value <> ""
Set stream = fso.CreateTextFile("Row" & iLoop & ".exp", True)
stream.WriteLine "Col1 " & Range.Cells(intRow, 1).Value
stream.WriteLine "Col2 " & Range.Cells(intRow, 2).Value
stream.Close
iLoop = iLoop + 1
intRow = intRow + 1
Loop
'XLBook.Save
XLBook.Close
XLApp.Quit
Set stream = Nothing
Set fso = Nothing
Set Range = Nothing
Set XLSheet = Nothing
Set XLBook = Nothing
Set XLApp = Nothing
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.