excelperfect 上文参见:常见的复制粘贴,VBA是怎么做的>>> 标签:VBA 使用Worksheet.Paste方法复制粘贴 Worksheet.Paste(Excel VBA没有Range.Paste方法)在某种程度上与Range.PasteSpecial方法非常相似。Paste方法的主要目的是将剪贴板包含的内容粘贴到相关工作表上。 Worksheet.Paste方法的基本语法如下: expression.Paste(Destination, Link) 其中,expression代表Worksheet对象。 参数Destination是要粘贴剪贴板内容的Range对象,由于该参数可选,因此可以忽略它;如果忽略,Excel会将剪贴板的内容粘贴到当前所选区域中,因此,如果省略该参数,则必须在使用Worksheet.Paste方法之前选择目标区域。只有在满足以下两个条件时,才能使用Destination参数:(i)剪贴板的内容可以粘贴到某个区域内,以及(ii)不使用Link参数。 参数Link可以建立到粘贴数据的源的链接,要执行此操作,将该参数设置为True;该参数的默认值为False,表示不建立到源数据的链接。如果在使用Worksheet.Paste方法时使用参数Destination,那么不能使用参数Link。下面的示例5显示了如何指定粘贴链接的目标。 示例4:复制和粘贴 使用Worksheet.Paste方法复制粘贴数据: Sub Copy_Paste() Worksheets('SampleData').Range('B5:M107').Copy Worksheets('Example 4 -Paste').Paste _ Destination:=Worksheets('Example4 - Paste').Range('B5:M107') Worksheets('Example 4 -Paste').Columns('B:M').AutoFit Application.CutCopyMode = False End Sub 示例5:复制和粘贴链接 使用Worksheet.Paste方法,用于将链接粘贴到源数据。 Sub Copy_Paste_Link() Worksheets('Sample Data').Range('B5:M107').Copy Worksheets('Example 5 -Paste Link').Activate ActiveSheet.Range('B5').Select ActiveSheet.Paste _ Link:=True Worksheets('Example 5 -Paste Link').Columns('B:M').AutoFit End Sub 过程中使用了Worksheet.Activate方法,主要目的是激活相关工作表,等价于单击Excel界面下方的工作表选项卡。ActiveSheet.Range(“B5”).Select方法,用于选择相关的单元格。 这个特定的过程使用Worksheet.Activate和Range.Select方法的原因,是指在使用Link参数时不能使用Paste方法的Destination参数。在没有Destination参数的情况下,Worksheet.Paste方法将剪贴板的内容粘贴到当前选择区域上。在本例中,如上所示的Worksheet.Activate和Range.Select方法确定了当前选择区域。 查看运行该示例过程的结果,可以发现(i)没有粘贴边框或数字格式,以及(ii)源区域中为空的单元格在建立链接时显示0。 使用Range.CopyPicture方法复制粘贴 Range.CopyPicture方法允许将Range对象复制为图片。 该对象始终复制到剪贴板。换句话说,没有Destination参数允许指定复制区域的目标。 Range.CopyPicture方法的语法: expression.CopyPicture(Appearance, Format) 其中,expression代表想要复制的Range对象。 CopyPicture方法有两个可选参数:Appearance和Format。注意,这两个参数与Excel在“复制图片”对话框中显示的参数完全相同。 在VBA中,“复制图片”对话框中的每个选项都有对应的VBA设置值。 Appearance参数指定如何将复制的区域实际复制为图片。在VBA中,可以通过使用XLPictureApearance枚举中的合适值来指定:xlScreen(或1)表示外观应尽可能接近屏幕上显示的外观;xlPrinter(或2)表示打印时的显示复制图片。 Format参数允许指定图片的格式。用于指定格式的枚举是XlCopyPictureFormat枚举:xlBitmap(或2)代表位图(.bmp,.jpg,或.gif格式);xlPicture(或-4147)表示绘制图片(.png,.wmf,或.mix)格式。 示例6:复制为图片 使用Range.CopyPicture方法将数据复制为图片: Sub Copy_Picture() Worksheets('SampleData').Range('B5:M107').CopyPicture _ Appearance:=xlScreen, _ Format:=xlPicture Worksheets('Example 6 -Copy Picture').Paste _ Destination:=Worksheets('Example 6 - CopyPicture').Range('B5') End Sub 其中,Appearance:=xlScreen,指定Excel复制单元格区域的方式与屏幕上的显示方式相似。Format:=xlPicture,指定绘制图片格式。 使用Range.Value和Range.Formula属性复制粘贴 严格来说,这些方法不会复制和粘贴单元格区域的内容。但是,如果只想将(i)值或(ii)特定源区域的公式复制并粘贴到另一个目标区域中,可能会发现它们很有用。 事实上,如果只是复制和粘贴值或公式,那么可能应该使用VBA来执行此任务,而不是依赖于上面介绍的Range.PasteSpecial方法。这样做的主要原因是性能和速度:这种策略倾向于产生更快的VBA代码(比使用Range.Copy方法更快)。 为了达到使用这种更快的方法复制和粘贴值或公式的目的,使用Range.Value属性或Range.Formula属性(取决于具体情况):Range.Value属性返回或设置特定区域的值;Range.Formula属性以A1样式引用返回或设置公式。 Range.Value属性的语法: expression.Value(RangeValueDataType) Range.Formula属性的语法: expression.Formula 这两种情形,expression都是一个代表Range对象的变量。 Range.Value的唯一可选参数是RangeValueDataType,使用xlRangeValueDataType枚举中的值指定区域值数据类型。然而,可以理解如何实现在这里描述的方法,以便将值从一个区域复制和粘贴到另一个范围,而不必过多地关注此参数。 示例7:设置目标区域的Value属性 下面的宏将工作表“Example 7 – Values”的单元格区域B5至M107的值设置为等于工作表“Sample Data”的单元格区域B5至M107的值。 Sub Change_Values() Worksheets('Example 7 -Values').Range('B5:M107').Value = Worksheets('SampleData').Range('B5:M107').Value Worksheets('Example 7 -Values').Columns('B:M').AutoFit End Sub 要使这种复制和粘贴值的方式起作用,源和目标区域的大小必须相同。 示例8:设置目标区域的Formula属性 下面的宏将工作表“Example 8 – Formulas”的单元格区域B5至M107的公式设置为与工作表“Sample Data”的单元格区域B5至M107的公式相同。 Sub Change_Formulas() Worksheets('Example 8 -Formulas').Range('B5:M107').Formula = Worksheets('SampleData').Range('B5:M107').Formula Worksheets('Example 8 -Formulas').Columns('B:M').AutoFit End Sub 注意,与示例7一样,源和目标区域的大小必须相同。 此外,当单元格包含常量时,Formula属性将返回常量。如果单元格为空,则Range.Formula返回空字符串。如果单元格包含公式,则Range.Formula属性以字符串形式返回公式,并在开头包含等号(=)。 如何取消剪切或复制模式并删除移动边框 如果在使用VBA复制和粘贴单元格或单元格区域时必须(或选择)使用剪贴板,则可能需要在宏结束之前取消剪切或复制模式,这将删除复制的单元格区域周围的移动边框。 取消剪切或复制模式并删除移动轮廓的VBA语句如下: Application.CutCopyMode = False 关于复制粘贴:其他的VBA方法 基于本文的介绍,可能还想学习或探索其他可用于粘贴其他对象或实现不同的目标。下面列出了一些,供参考。 1.Chart.CopyPicture方法,将选定的图表对象粘贴为图片。 2.Chart.Copy方法和Charts.Copy方法,将图表工作表表复制到另一个位置。 3.Chart.Paste方法,将数据粘贴到特定图表中。 4.ChartArea.Copy方法,将图表的图表区域复制到剪贴板。 5.ChartObject.Copy方法和ChartObjects.Copy方法,将嵌入的图表复制到剪贴板。 6.ChartObject.CopyPicture方法和ChartObjects.CopyPicture方法,将嵌入的图表作为图片复制到剪贴板。 7.Floor.Paste方法,用于将剪贴板中的图片粘贴到特定图表的底层。 8.Point.Copy方法,(当图表系列中的一个点有图片填充时)将相关图片复制到剪贴板。 9.Point.Paste方法,将剪贴板中的图片粘贴为图表系列中特定点的标记。 10.Range.CopyFromRecordset方法,将数据访问对象(DAO)或ActiveX数据对象(ADO)Recordset对象的内容复制到工作表中。 11.Series.Copy方法,复制图表中系列上标记的图片填充(如果系列具有图片填充)。 12.Series.Paste方法,将剪贴板中的图片粘贴为图表中特定系列的标记。 13.SeriesCollection.Paste方法,将剪贴板上的数据粘贴到图表系列集合中。 14.Shape.CopyPicture方法,将对象作为图片复制到剪贴板。 15.Sheets.Copy方法,将工作表复制到其他位置。 16.Slicer.Copy方法,将切片器复制到剪贴板。 17.Walls.Paste方法,将剪贴板中的图片粘贴铺满图表。 18.Worksheet.Copy方法,将工作表复制到其他位置。 19.Worksheet.PasteSpecial方法,使用指定格式将剪贴板中的内容粘贴到工作表上。此特定方法通常用于粘贴(i)来自其他应用程序的数据,或(ii)以特定格式粘贴数据。 上述列表没有包括复制和粘贴对象的所有VBA方法,主要涵盖了应用于某些主要对象的方法,如图表和工作表。 小结 现在,你应该了解了在Excel中复制和粘贴单元格和单元格区域时可以使用的最重要的VBA方法。包括: 1.Range.Copy方法 2.Range.PasteSpecial方法 3.Worksheet.Paste方法 4.Range.CopyPicture方法 5.Range.Value和Range.Formula属性 |
|
来自: hercules028 > 《VBA》