我是vba的新手,并尝试编写一些代码,将某些组数据从受保护的工作簿复制到新的工作簿。
在我的资料表中是一个分组数据的列表,其中包含一些列,例如COUNTRY,REVENUE,WIN,LOSS。 国家的实体按地区分组。 因此,在每个国家/地区下,具有subRevenue,subWIN,subLOSS的区域是可变的。
我期望的是:对于一组定义好的国家/地区实体(例如德国和日本),我想将这些数据及其子数据(地区)复制到新的工作簿中。
谁能给我一个通用的例子或有用的功能?
先谢谢您! (一个VBA菜鸟)
答案 0 :(得分:1)
所以这里有一些让您开始的地方。
首先,由于工作表受到保护,因此您需要先取消保护工作表,然后才能复制任何内容。以下代码显示了如何执行此操作,并将strPassword
用作包含密码的变量。由于工作表已经受到保护,因此首先要取消保护它,然后执行复制操作,然后再次保护它。
通常,您可以将range.copy
与range.pastespecial
一起使用,以将数据复制到所需的任何位置。要复制到新工作簿,您可以使用Workbooks.add
,否则只需指定其他工作簿的文件路径
Sub YourSub()
Dim ws As Worksheet: Set ws =Worksheets("YourSheet")
Dim strPassword As String: strPassword = "YourPassword"
Set NewBook = Workbooks.Add ' OR the workbook path
ws.Unprotect Password:= strPassword
ws.Range("A1:AA100").Copy
NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues)
NewBook.SaveAs FileName:= ' Insert FilePath/ FileName here
ws.Protect Password:= strPassword
End Sub
这是有关如何将范围从受保护的工作簿复制到另一个工作簿的一些常规信息。为此,您可以在某些国家/地区创建表格或使用命名范围(使用名称管理器或在VBA中使用)。然后,您可以使用if.. elseif.. else.. end if
或select case
方法来查找特定范围,并将案件列表指向包含要复制的所有国家/地区的范围。
希望这对快速概述很有帮助