vba 在不打开表格的情况下获取不连续的不同工作薄单元格值并写入到新的工作薄指定的单元单元格内
时间: 2024-03-08 07:48:20 浏览: 19
要在不打开工作簿的情况下获取不连续的不同工作表单元格的值并将它们写入到新的工作簿指定的单元格中,可以使用VBA中的`Workbook`对象、`Range`对象以及`Workbooks.Add`方法和`SaveAs`方法。以下是一个示例代码:
```
Sub GetDiscontinuousRangeValuesAndWriteToNewWorkbook()
'打开原始工作簿
Dim wb As Workbook
Set wb = Workbooks.Open("C:\example.xlsx")
'获取不连续的单元格范围
Dim rng1 As Range
Set rng1 = wb.Worksheets("Sheet1").Range("A1,B2")
Dim rng2 As Range
Set rng2 = wb.Worksheets("Sheet2").Range("C3:E5,G8")
'创建新的工作簿并写入数据
Dim newWb As Workbook
Set newWb = Workbooks.Add '创建新的工作簿
'将rng1中的值写入到新工作簿的A1和B1单元格
newWb.Worksheets("Sheet1").Range("A1").Value = rng1.Cells(1, 1).Value
newWb.Worksheets("Sheet1").Range("B1").Value = rng1.Cells(1, 2).Value
'将rng2中的值写入到新工作簿的C3到E5和G8单元格
newWb.Worksheets("Sheet2").Range("C3").Value = rng2.Cells(1, 1).Value
newWb.Worksheets("Sheet2").Range("D3").Value = rng2.Cells(1, 2).Value
newWb.Worksheets("Sheet2").Range("E3").Value = rng2.Cells(1, 3).Value
newWb.Worksheets("Sheet2").Range("C4").Value = rng2.Cells(2, 1).Value
newWb.Worksheets("Sheet2").Range("D4").Value = rng2.Cells(2, 2).Value
newWb.Worksheets("Sheet2").Range("E4").Value = rng2.Cells(2, 3).Value
newWb.Worksheets("Sheet2").Range("C5").Value = rng2.Cells(3, 1).Value
newWb.Worksheets("Sheet2").Range("D5").Value = rng2.Cells(3, 2).Value
newWb.Worksheets("Sheet2").Range("E5").Value = rng2.Cells(3, 3).Value
newWb.Worksheets("Sheet2").Range("G8").Value = rng2.Cells(4, 1).Value
'保存新工作簿并关闭
newWb.SaveAs "C:\newexample.xlsx" '将新工作簿保存到指定路径下
newWb.Close SaveChanges:=False '关闭新工作簿,不保存更改
'关闭原始工作簿,不保存更改
wb.Close SaveChanges:=False
End Sub
```
上述代码将获取指定工作簿中Sheet1的A1和B2单元格,以及Sheet2中的C3到E5和G8单元格的值,并将它们分别写入到新的工作簿的A1和B1单元格,以及C3到E5和G8单元格中。请注意,在将值写入到新的工作簿中时,您需要根据具体情况调整代码中的单元格地址。在代码执行完毕后,新工作簿将自动保存到指定路径下,并关闭且不保存更改。原始工作簿也将自动关闭且不保存更改。