我是 VBA 的新手,我能够找到单独的代码并将它们放在一起,但是我在找到有助于我获得预期结果的代码时遇到了一些困难。基本上,我想要一个宏工具,它可以让我浏览 Excel 文件的文件名并复制从第 5 行开始的所有活动行,并在 Col A:J 上粘贴值(标题除外),因此粘贴将从第 2 行开始。
我根据我的要求为功能/要求找到了单独的 VBA 代码,但问题是每次我尝试将它们添加到现有代码中时都会导致错误。
Sub GetFile()
'Browse for File
Dim fileNameAndPath As Variant
fileNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened")
If fileNameAndPath = False Then Exit Sub
'Open the File
Workbooks.Open Filename:=fileNameAndPath
'Close the File
Workbooks.Close Filename:=fileNameAndPath
'Copy Data
Set range_to_copy = Worksheets("Report").Rows("5:1000")
'Paste Data
Set range_for_pasting = Workbooks("Macro Manual IHB.xlsm").Worksheets("CashPositionReport").Range("A2:J")
range_to_copy.Copy
range_for_pasting.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End Sub
Errors are on these codes:
'Close the File
Workbooks.Close Filename:=fileNameAndPath
'Paste Data
Set range_for_pasting = Workbooks("Macro Manual IHB.xlsm").Worksheets("CashPositionReport").Range("A2:J")
关闭文件代码根本不起作用但是如果我尝试使用 .Range("A2") 而不是上面的,则粘贴数据有效,但它覆盖了我在 Col K:Q 中的公式
希望你能帮我解决这个问题。
总结评论中的来回:
1)您可以PasteSpecial
进入单个单元格,A2
。您的问题是您正在复制整行:Set range_to_copy = Worksheets("Report").Rows("5:1000")
当您可能只需要Range("A5:J1000")
. 粘贴整行将覆盖 J 右侧列中的任何公式。
2) 是Workbook.Close
,不是Workbooks
。所以你需要使用一个有效的Workbook
对象。像这样的东西:
Dim wb as Workbook
Set wb = Workbooks.Open(FileName:=fileNameAndPath)
wb.Close ' no need for FileName, the workbook already has a fileName
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句