Excel VBA – 代码移动或复制工作表没有警告

我正在尝试创build一个与右键单击工作簿选项卡,select移动或复制,检查复制选项,select另一个打开的工作簿并单击确定但没有警告相同的macros。 我发现代码禁用警告,我能够logging一个macros,做我想要的,但我不知道如何使其请求打开工作簿复制到。

简而言之,如何在WorksheetIWantToCopy是用户当前select的用户的情况下运行以下代码,而OpenWorkbookIWantToCopyToo.xlsx是用户从打开的工作簿列表中select的工作簿

Application.DisplayAlerts = False Sheets("**WorksheetIWantToCopy**").Select Sheets("**WorksheetIWantToCopy**").Copy Before:=Workbooks( _ "**OpenWorkbookIWantToCopyToo.xlsx**").Sheets(1) 

我很欣赏任何人都可以提供的信息。 我的团队非常感谢您的支持(由于我们并不关心冲突,我们现在必须打好25个警告)。 谢谢!

如果您要复制的工作表始终是活动工作表,那么您可以使用ActiveSheet

至于让用户select一个工作簿,它可以像使用InputBox一样简单。

 Public Function getWorkbookName() As String Dim i As Integer, sListOfWbks As String, sRsp As String ' build list of workbooks For i = 1 To Workbooks.Count sListOfWbks = sWbkList & vbCrLf & i & " - " & Workbooks(i).Name Next i sRsp = InputBox("Select workbook." & vbCrLf & sListOfWbks) If IsNumeric(sRsp) Then getWorkbookName = Workbooks(CInt(sRsp)).Name Else ' user pressed cancel or entered invalid text getWorkbookName = "" End If End Function 

这个基本的例子当然会列出所有的工作簿,包括隐藏的加载项和你正在离开的工作簿。

这需要在别的之前说明:始终, 永远,总是使用.Copy而不是.Copy自动洗牌与VBA的Excel工作簿。 Move具有固有的风险,因为它是对其他文件的修改,如果你的代码行为不当,那么你可能会丢失你正在使用的所有数据。

首先,知道哪个工作簿是哪一个,没有含糊不清:

 Dim wkbkDestination, wkbkTemporary As Workbook Set wkbkDestination = Workbooks("OpenWorkbookIWantToCopyTo.xlsx") Set wkbkTemporary = Workbooks.Open("WorkbookIWantToCopy.xlsx") 

接下来,将所需的选项卡复制到您的目标工作簿,重命名新的选项卡以防止错误,并closures第二个工作簿,而不保存。

 wkbkTemporary.Worksheets("WorksheetIWantToCopy").Copy Before:=wkbkDestination.Worksheets(1) wkbkDestination.Worksheets(1).Name = "WorkbookIWantToCopy" wkbkTemporary.Close SaveChanges = False 

当然,根据你打算使用的确切的控制,这个代码可以用很多方法来实现。 从你的描述来看,你不清楚你想要解决什么确切的问题,以及这是一个你想要为一个给定的文件列表完成的一次性事件,或者这个函数是否被持续使用。