繁体   English   中英

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

[英]Only copy values of visible rows from one workbook into a new workbook using VBA Macros

我有一些宏可以将工作表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但是由于这样会导致您必须迭代下一个行号,因此更容易清除值

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

如果您需要更多的指导来将各个部分组合在一起,请提供更多有关哪些部分存在问题的详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM