Excel VBA跨多个工作表复制和重新定位徽标

时间:2015-03-20 16:20:43

标签: excel vba excel-vba

我目前正在寻找一个简单的excel工作簿,其中包含我们使用的几十个模板表单(每个工作表一个)。作为其中的一部分,我希望有一个"大师"在前面的工作表,可以将宏复制信息压入所有其他工作表。

为单元格执行此操作非常简单,但我在复制任何徽标方面取得的成功有限。我的目的是将我公司的徽标放在表格的右上角,左上角的任何客户徽标,按一个按钮,2-3个徽标将出现在所有其他工作表的同一位置。 / p>

我已设法通过以下代码按名称单独重新定位徽标:

For Each Shape In Worksheet.Shapes
       If Shape.Name = "OurLogo" Then
        Shape.Left = (Wb1.Sheets("Inputs").Shapes("Our Logo").Left - 1)
        Shape.Top = (Wb1.Sheets("Inputs").Shapes("Our Logo").Top - 1)
        End If
        Next Shape

我们的徽标是原始徽标,而OurLogo是复制并命名的徽标。

但是,这意味着我需要已使用正确名称将徽标复制到每个工作簿中的正确单元格中。我已经成功地将徽标复制到所有工作表中,但由于我一直没有重命名,他们只是被分配了#34;图片#"作为一个名字。我尝试在类似的" For Each"中重新命名。宏将其复制到所有工作表中,但这只是重命名了一个粘贴到活动工作表中的徽标,并且没有在剩余的工作表中重命名。

有关如何将这些图片复制和重命名为多个工作表以及重命名它们的任何建议将非常感激。或者,我会先接受复制,然后再接受第二个宏重命名的方法。

提前感谢您的帮助。

我以前尝试过如何将一个Shape复制到另一个工作表(不是图片)?,方法但设置目标单元格只是将徽标转储到左上角,当我希望它居中时看起来非常不整洁 - 因此根据原始徽标的位置重新定位宏。该链接下的方法还将徽标重命名为"图片#",创建重命名要求。

2 个答案:

答案 0 :(得分:1)

谷歌搜索“Excel VBA形状副本”时的第二个结果指向SE的一个漂亮的问题。

How to copy a Shape to another worksheet (not as a picture)?

非常肯定会解决您的问题。

答案 1 :(得分:0)

我用1个形状完成了这个

Sub CopyAndRenameShape()

    Dim sh As Shape
    Dim wks As Worksheet

    Set sh = Sheet1.Shapes("shtTest")

    For Each wks In ThisWorkbook.Worksheets
        If wks.Name <> ActiveSheet.Name Then
            sh.Name = wks.Name & "_" & sh.Name
            sh.Copy
            wks.Paste
        End If
    Next wks
    sh.Name = "shtTest"
End Sub