方案如下:
我想要复制 A.xls ,第2行以后(排除包含列标题的第1行)的内容并追加/将其粘贴到B.xls文件中,而不会覆盖B.xls上的现有数据。
考虑到所有这些细节,我想编写一个vbscript来自动执行此任务。
请帮忙。
非常感谢,提前。
答案 0 :(得分:2)
它需要大量清理,但这样的事情应该有效。我会稍微清理一下然后进行编辑。
Sub CopyRows()
' Choose the name of the Second Workbook and last column.
' It must be in the same directory as your First Workbook.
secondWorkbook = "B.xls"
lastColumn = "H"
' A couple more variables
currentWorkbook = ThisWorkbook.Name
Workbooks.Open ThisWorkbook.Path & "\" & secondWorkbook
' In the First Workbook, find and select the first empty
' cell in column A on the first Worksheet.
Windows(currentWorkbook).Activate
With Worksheets(1).Columns("A:A")
Set c = .Find("", LookIn:=xlValues)
If Not c Is Nothing Then
' Select and copy from A2 to the end.
secondAddress = Replace(c.Address, "$A$", "")
Range("A2:" & lastColumn & CStr(CInt(secondAddress) - 1)).Select
Selection.Copy
End If
End With
' Activate the Second Workbook
Windows(secondWorkbook).Activate
With Worksheets(1).Columns("A:A")
Set c = .Find("", LookIn:=xlValues)
If Not c Is Nothing Then
' Select and paste the data from First Workbook
Range(c.Address).Select
ActiveSheet.Paste
End If
End With
End Sub
更新:这应该可以解决问题。我也是第一次从错误的工作簿中复制过来。如果您有疑问,请告诉我。
答案 1 :(得分:2)
这是Macro Recoder可能为您编写的内容。你会提出不同的方法。
开启录音。打开A.xls和B.xls。在a上向下移动一行。按 Shift + 结束然后→,然后 Shift + 结束 + ↓。然后 Ctrl + C 复制数据。切换回B. 结束 + ↓,↓。粘贴 Ctrl + V 。关闭录音。
您可以在Excel中录制。
替代 + Ť,中号, - [R
然后 Home 键然后↑。停止录音。
看看Excel写的是什么
Selection.End(xlUp).Select
或者您是否有录制的“转到”对话框
Application.Goto Reference:="R1C1"
或者如果您录制了 Ctrl + Home
Range("A1").Select
转换为vbscript
记录excel宏录制器中的步骤。你必须重写一下,因为它使用了一种vbs没有的语法。
这适用于(我在vba中没有中篇9)xlRangeAutoFormatAccounting4
。
Selection.AutoFormat Format:=xlRangeAutoFormatAccounting4, Number:=True, _
Font:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
首先在vba的对象浏览器中查找常量。 xlRangeAutoFormatAccounting4 = 17
然后在对象浏览器中查看该函数,并查看函数定义的底部。
Function AutoFormat([Format As XlRangeAutoFormat = xlRangeAutoFormatClassic1], [Number], [Font], [Alignment], [Border], [Pattern], [Width])
所以vba变成vbs(和vbs在vba中工作)(正如你所看到的,你可以通过正确的方式计算出来,而不需要通常查看函数)
Selection.AutoFormat 17, True, True, True,True, True, True
所以你的代码变成了
objXLWs.Range("A3").CurrentRegion.Select.AutoFormat 17, True, True, True,True, True, True