使用VB脚本在Excel中将文本移动到列

时间:2013-08-06 21:30:43

标签: excel vbscript copy spreadsheet paste

我有一个包含记录的大型Excel电子表格。每条记录为12行。我需要他们搬到专栏。每12行需要复制到匹配的同一列中。每行都是它自己的列。我需要脚本打开工作簿,执行任务,然后使用新安排保存工作簿。

电子表格非常大,所以我需要让脚本一直循环到工作表。在脚本的最后,我希望前12行是分布在12列的1条记录。这就是我到目前为止所做的:

Dim xlApp
Dim xlSheet1
Dim xlBook1

Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "C:\users\am2878\desktop\Exchange Audit Log.xls"

Set xlBook1 = xlApp.Workbooks("Exchange Audit Log.xls")
Set xlSheet1 + xlBook1.Worksheet("Exchange Audit Log")

xlApp.Application.Visible = True

xlSheet1.Range("A1:A12").Cut

xlSheet1.Range("A1:L1").Paste

Loop

xlBook1.SaveAs "C:\users\am2878\desktop\Exchange Audit Log.xls", xlNormal, "","",False,False
xlApp.Quit

1 个答案:

答案 0 :(得分:0)

您正在寻找的操作称为"transpose"。在Excel中,它是作为PasteSpecial方法的参数实现的。但是,您无法粘贴到刚切出的单元格中,因此需要将其粘贴到其他位置:

Const xlAll  = -4104
Const xlNone = -4142

...

xlSheet1.Range("A1:A12").Cut
xlBook1.Sheets(2).PasteSpecial xlAll, xlNone, , True

如果您需要修改原始工作表,则可以将转置数据移回源工作表:

xlBook1.Sheets(2).Range("A1:L1").Cut
xlSheet1.Activate
xlApp.ActiveSheet.Range("A1").Select
xlApp.ActiveSheet.Paste