仅使用VBAmacros将一个工作簿中可见行的值复制到新工作簿中

我有一些macros从我现有的工作簿复制Sheet 2到一个新的工作簿。 此代码正常工作,除了隐藏的行不应显示在新的工作簿上。

下面是我写的代码,将表单复制并粘贴其值:

Dim Output As Workbook Dim FileName As String Set Output = Workbooks.Add Application.DisplayAlerts = False ThisWorkbook.Worksheets(sourceSheetName).Cells. _ SpecialCells(xlCellTypeVisible).Copy Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=True, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats FileName = ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets("Quote Questions").Range("AK545").Value & ".xls" Output.SaveAs FileName 

那么代码去哪里将只显示未隐藏的单元格,而不是隐藏的单元格?

编辑答案提交后,代码稍有变化。 这里是更多的信息。 正在被复制的工作表中的一些单元格被合并,并在代码行中出现错误:

 ThisWorkbook.Worksheets(sourceSheetName).Cells. _ SpecialCells(xlCellTypeVisible).Copy 

说: Cannot change part of a merged cell ,所以即时猜测需要另一块添加?

我不想去表单并手动解除所有的单元格。

更换线路

 ThisWorkbook.Worksheets("Quote & Proposal").Cells.Copy 

 ThisWorkbook.Worksheets("Quote & Proposal").Cells. _ SpecialCells(xlCellTypeVisible).Copy 

它应该工作。

仅复制可见行(不隐藏)

你可以检查行是否隐藏了这个代码

 Sub RowIsHidden() For i = 1 To 7 MsgBox Cells(i, 1).EntireRow.Hidden Next End Sub 

复制单元格并仅粘贴值

这与上面的代码类似。 您也可以使用图纸名称,而不是表格的索引

 Sub CopyOnlyValuesFromSheet() ' Copy all Cells from first Sheet (SheetIndex =1) ThisWorkbook.Worksheets(1).Cells.Copy ' Select second Sheet (SheetIndex =2) ThisWorkbook.Worksheets(2).Select ' Paste only values into Selection Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=True, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats End Sub 

清除隐藏行的值

我尝试过使用Cells(i, 1).EntireRow.Delete Shift:=xlUp但是由于这会导致你必须迭代下一个rownumber,所以清除值

 Sub RowIsHiddenClearValue() For i = 1 To 10 If Cells(i, 1).EntireRow.Hidden Then Cells(i, 1).EntireRow.Value = "" End If Next End Sub 

基于彼得斯答案

确保目标工作表中的光标放置在第一个单元格中。

 Sub AnotherAnswer() Call CopyValuesOfVisibleRows("Quote & Proposal", "Quote Questions") End Sub Sub CopyValuesOfVisibleRows(sourceSheetName, destinationSheetName) ThisWorkbook.Worksheets(sourceSheetName).Cells. _ SpecialCells(xlCellTypeVisible).Copy ThisWorkbook.Worksheets(destinationSheetName).Paste End Sub 

如果你需要更多的指针把这些部分放在一起,请提供更多关于你遇到问题的部分的细节。