Forum Discussion
Errors when coying to another workbook
sanjibdutta here goes the code. Thank you for your time!
Sub CopyRecipe()
On Error Resume Next
Dim newName As String
newName = Sheets("Plantilla Coste").Range("B2").Value
' Check if worksheet with same name exists
Dim sheetExists As Boolean
sheetExists = False
For Each sh In ThisWorkbook.Sheets
If sh.Name = newName Then
sheetExists = True
Exit For
End If
Next sh
If sheetExists Then
MsgBox "La receta " & newName & " ya existe. Por favor, elije otro nombre."
Exit Sub
End If
' Copy worksheet
Dim destWb As Workbook
Set destWb = Workbooks("Escandallo.xlsx")
Sheets("Plantilla Coste").Copy After:=destWb.Sheets(destWb.Sheets.Count)
' Rename worksheet
destWb.Sheets(destWb.Sheets.Count).Name = newName
' Delete data validation from range A10:B29
Dim firstValidationCell As Range
Set firstValidationCell = destWb.Worksheets(newName).Range("A10:B29").Find(What:="*", LookIn:=xlValidation)
If Not firstValidationCell Is Nothing Then
firstValidationCell.Resize(20).Validation.Delete
End If
' Delete buttons
destWb.Worksheets(newName).Shapes.Range(Array("Button 1", "Button 2")).Delete
Range("B2").Select
On Error GoTo 0
End Sub- TotallyWiredMay 14, 2023Copper Contributor
There are 2 books opened at the same time, one in COSTES(cost) and the other ESCANDALLO(dish cost) which is empty. The code does not create a new book, it only creates a copy of PLANTILLA(template) sheet the from COSTES to ESCANDALLO book.
I can get rid of the macros if I save it as .xlsx but I still get error because of the following code being copied:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim shtP As Worksheet ' Pivot worksheet ' initalize variables Set shtP = Sheets("Pivot") ' Only consider columnm B If Intersect(Target, Range("B10:B29")) Is Nothing Then Exit Sub ' Set the selected provider shtP.Range("Sel_Pro") = Target.Offset(0, -1).Value ' Check to make sure it is in the database If shtP.Range("Num_Ref") = 0 Then MsgBox "Selecciona Proveedor" Exit Sub End If ' Set the fileter shtP.Range("Filter_Pro") = shtP.Range("Sel_Pro") ' Refresh the pivot tables shtP.PivotTables("Pt_referencia").PivotCache.Refresh End SubThis manages the pivot table.
- sanjibduttaMay 14, 2023Brass Contributor
Two things...1)Once PLANTILLA(template) sheet is copied from COSTES to ESCANDALLO book the ESCANDALLO book must be saved in some code to save the changes.where is that code?
2)When a sheet containing a button with code behind is copied to another even macro free book (xlsx) the VB code gets copied anyway. In this situation the best is to avoid macro button driven code in COSTES and just copy sheet and save ESCANDALLO by code. Instead of cycling back on the issie I can fix this once for all if you share the COSTES workbook and ESCANDALLO workbook(if it is not realy blank workbook)..Of course if you don't have any issue sharing this. You can send workbook to my email address at email address removed for privacy reasons- TotallyWiredMay 14, 2023Copper Contributor
Thank you very much.
Here are the books https://www.dropbox.com/sh/wyb8f3mxydb2di4/AAAlET7xkWb84K7zeMQxER02a?dl=0