【发布时间】:2019-11-16 09:33:27
【问题描述】:
我想将整个工作表保存到一个新工作簿中,以具有相同的格式,新工作簿的名称将基于特定单元格。
我有以下代码:
Sub cautare_copiere()
'1. declar si setez variabilele
'2. sterg rezultatele vechi
'3. cauta si lipeste intr-un nou tab
Dim datasheet As Worksheet 'de unde este informatia copiata
Dim raportsheet As Worksheet 'unde este copiata informatia
Dim salveaza As Worksheet 'unde se copiaza informatia pentru output
Dim familie As String
Dim ultimulrand As Integer
Dim i As Integer 'numaram randurile
'setez variable
Set datasheet = Sheet1
Set raportsheet = Sheet2
Set salveaza = Sheet4
familie = raportsheet.Range("B2").Value
valoare = raportsheet.Range("D2").Value
cantitate = raportsheet.Range("F2").Value
'sterge datele din tab-ul Raport
salveaza.Range("A5:L200").ClearContents 'ajustez range-ul de unde sterg datele - daca am informatie multa, il maresc
salveaza.Range("A5:L200").ClearFormats
'se duce in tab-ul Copy, cauta si copiaza
datasheet.Select
ultimulrand = Cells(Rows.Count, 1).End(xlUp).Row
'cauta printre randuri si selecteaza informatia pe care o cautam
With datasheet
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 5) = familie And .Cells(i, 8) <= valoare And _
.Cells(i, 7) <= cantitate Then
'Copierea unui range este relativa la rand....
.Rows(i).Range("A1,C1,E1:H1").Copy _
salveaza.Range("A200").End(xlUp).Offset(1, 0)
End If
Next i
End With
'aranjeaza in ordine crescatoare, formateaza pagina si adauga anumite valori inainte de salvare
With salveaza
.Range("A5:L200").Sort Key1:=.Range("F5"), Order1:=xlAscending 'sorteaza in coloana F in ordine crescatoare
.Range("A2").MergeArea.Value = .Range("C5") 'adauga valoare in casuta
End With
'selecteaza casuta B2 din Raport dupa ce a terminat de copiat informatia
With raportsheet
.Select
.Range("B2").Select
End With
End Sub
它将数据从 Sheet1 复制到 Output 表,然后返回到 Raport 表。我想将输出表保存到新工作簿并从 Raport 表名称另存为 B2 值。
谢谢!
【问题讨论】:
-
在搜索框中输入
[vba] copy worksheet to new workbook。在撰写本文时,1916 的结果是第一个提供了一个代码示例,该示例适用于对您的案例进行少量修改。 -
我想在代码中加入一些东西,因为我是 VBA 的新手。感谢您的回答。我会弄清楚的....