2014-11-26 7 views
1

Вот небольшой кусочек кода, который должен играть роль:Excel VBA: ActiveWorkbook не меняется, когда я открываю новую книгу

Workbooks.Open (MPPGLoc) 

ActiveWorkbook.Sheets("MPPG").Activate 

ActiveSheet.Move Before:=Workbooks("DPV Acq Test.xlsm").Sheets(1) 

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

Не уверен, что проблема в том, что открытие книги не обязательно делает ее активной или проблемой с моей функцией перемещения. Любая помощь приветствуется, спасибо.

ответ

1

И поэтому вам следует избегать использования Activeworkbook Использовать объекты.

Смотрите этот пример (Непроверено)

Dim wb As worksbook, wbNew As Workbook 
Dim wsNew As Worksheet 

'~~> I am assuming that you are running the code from 
'~~> Workbooks("DPV Acq Test.xlsm") 
Set wb = ThisWorkbook 

Set wbNew = Workbooks.Open(MPPGLoc) 
Set wsNew = wbNew.Sheets("MPPG") 

wsNew.Move Before:=wb.Sheets(1) 
+0

Спасибо за быстрый ответ. Впервые использование нескольких книг не было известно о недостатках с ActiveWorkbook. Я буду помнить об этом в будущем. –

+0

вам следует избегать использования «Activeworkbook», потому что, когда вы работаете с несколькими книгами, иногда активная книга не та, которую вы можете себе представить, и, следовательно, вы всегда должны работать с объектами :) Надеюсь, ваша проблема решена –

Смежные вопросы