2013-08-06 116 views
0

我有一個包含記錄的大型Excel電子表格。每條記錄是12行。我需要他們轉移到專欄。每十二行需要被複制到與之匹配的同一列中。每一行都將是它自己的列。我需要腳本來打開工作簿,執行任務,然後用新的安排保存工作簿。使用VB腳本在Excel中將文本移動到列

電子表格非常大,所以我需要腳本一直循環到表單。在腳本結尾處,我希望前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 

回答

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