新的Excel文件上的VBA

我几乎每天都以电子表格的forms收到报告。 我有一个macros代码,将取出电子表格的某些部分,并把它放到一个新的电子表格。 我想知道是否有办法运行这个macros,而不必手动复制粘贴到我收到的每个新文件。

Sub CopyItOver() Dim newbook As Workbook Set newbook = Workbooks.Add ThisWorkbook.Worksheets("sheet1").Range("fe1:fh1").Copy Destination:=newbook.Worksheets("Sheet1").Range("A1:D1") ThisWorkbook.Worksheets("sheet1").Range("IZ1:JI1").Copy Destination:=newbook.Worksheets("Sheet1").Range("E1") ThisWorkbook.Worksheets("sheet1").Range("JK1:JL1").Copy Destination:=newbook.Worksheets("Sheet1").Range("O1") ThisWorkbook.Worksheets("sheet1").Range("KA1:KJ1, Kl1, KR1, KT1").Copy Destination:=newbook.Worksheets("Sheet1").Range("Q1") ThisWorkbook.Worksheets("sheet1").Range("fe328:fh328").Copy Destination:=newbook.Worksheets("Sheet1").Range("A2") ThisWorkbook.Worksheets("sheet1").Range("IZ328:JI711").Copy Destination:=newbook.Worksheets("Sheet1").Range("E2") ThisWorkbook.Worksheets("sheet1").Range("JK328:JL711").Copy Destination:=newbook.Worksheets("Sheet1").Range("O2") ThisWorkbook.Worksheets("sheet1").Range("KA328:KJ711, KL328:KL711, KR328:KR711, KT328:KT711").Copy Destination:=newbook.Worksheets("Sheet1").Range("Q2") Columns("E").ColumnWidth = 15 Columns("Q").ColumnWidth = 15 End Sub 

当您创build一个macros并select保存到您的个人macros工作簿的选项时,每次启动Excel时都可用。 或者创build一个自定义工具栏button,并附加macros,它将永远在那里…

你可以创build一个小的.vbs文件,你可以运行(通过双击),它会自动在你的电子表格上运行你的macros。

首先将你的工作macros导出到某个位置。 然后将文本文件中的行下面的粘贴复制并保存为.vbs文件。

 Dim fso, xlApp, xlBook Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False Set xlBook = xlApp.Workbooks.Open(fileToUse) xlApp.VBE.ActiveVBProject.VBComponents.Import "Path to your .bas file" xlApp.Run "Name of your Sub" xlBook.Save xlBook.Close xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing Set fso = Nothing 

只需更改文件中的path。

就像schwack说的那样,你可以把macros放在你的个人macros工作簿中,它总是可用的,或者把它放在一个工作簿里,你可以在收到的报告工作簿旁边打开它。 但是您将需要更改macros代码,以便它不使用“ThisWorkbook”对象。 您可以简单地使用“ActiveWorkbook”。