2010-11-02 7 views
1

Я пытаюсь обновить прайс-лист из одной книги в другую, за исключением я не хочу, чтобы отправить заказчику макросы из списка Master Цены ...Excel (2007) VBA COPY & Paste

У мастера в конечном итоге будет одна вкладка для каждого поставщика.

Мастер Копия будет отправлена ​​заказчику без макросов ..

Вот мой код, как сейчас ..

Я получаю сообщение об ошибке 1004 Метод удалось вставить

'Now copy from the Update Master to the Cust Master... 
mWrk = "A1:Z" & Trim(Str(TotRows)) <---TotRows is the total # of rows used 



Application.CutCopyMode = XLCopy 
Worksheets(WhichFile).Range(mWrk).Copy <-- WhichFile has the value of the sheet name.. 


Dim mXLCopy As Workbook 
Set mXLCopy = Workbooks.Open(ThisWorkbook.Path & "\Customer Master Price.xlsx") 

' See if the sheet is already there. if so delete it. 
Dim IsThere As Boolean 
IsThere = False 
For x = 1 To mXLCopy.Sheets.Count 
    If UCase(mXLCopy.Sheets(x).Name) = UCase(WhichFile) Then 
     IsThere = True 
    End If 
Next x 
Application.DisplayAlerts = False 
If IsThere Then 
    mXLCopy.Sheets(WhichFile).Delete 
End If 

' 
'Now add it & activate it.. 
mXLCopy.Sheets.Add().Name = WhichFile 
mXLCopy.Activate 

With mXLCopy.Sheets(WhichFile) 
    Range(mWrk).PasteSpecial xlPasteAll, xlPasteSpecialOperationNone <- Fails here 
End With 

Application.DisplayAlerts = True 

mXLCopy.Save 
mXLCopy.Close 
Set mRange = Nothing 
Set mXLCopy = Nothing 

Любые идеи кто-нибудь? Идти вперед & высмеивать меня, если необходимо, но мне нужен ответ & никто из моих не работают ...

ответ

1

Причина это происходит потому, что ваша команда mXLCopy.Sheets(WhichFile).Delete очищает буфер обмена.

Вам необходимо изменить порядок кода таким образом, чтобы сначала удалить и повторно создать лист, а затем скопировать диапазон, который нужно вставить.

Надеюсь, это поможет, Будьте счастливы

+0

Очень хорошо! Спасибо за помощь Джулиана. Около 10 минут назад у меня было прозрение относительно удаления, сделанного точно так же, как вы сказали. Я перестроил код, разделяющий две функции, и попытался с успехом! .. Я вернулся сюда, чтобы обновить этот пост и нашел ваш ответ. Опять же, спасибо .. –