Макро странное поведение - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь запустить очень простой макрос, который, по сути, открывает два файла XLS, а затем копирует из них некоторые диапазоны и вставляет эту информацию в другие диапазоны в целевом файле.Проблема в том, что макрос работает хорошо, но последний диапазон вставляется в лист «Выделение», а не в лист, указанный в коде. Я не могу понять, что происходит, потому что у меня есть книга клонов (макрос здесь изменяется только в нескольких диапазонах), и он работает очень хорошо.

Sub CopySheets()
On Error GoTo eh
Dim Path As String
Dim FileA As String
Dim FileB As String
Dim Filename As String
Dim Filename2 As String
Dim SheetSource5 As String
Dim SheetDest5 As String

'Defining Strings

Path = Sheets("Config").Range("C2").Value
FileA = Sheets("Selection").Range("G23").Value
FileB = Sheets("Selection").Range("H23").Value
Filename = Path & FileA & ".xlsx"
Filename2 = Path & FileB & ".xlsx"
SheetSource1 = "MS1"
SheetSource2 = "MS2"
SheetSource3 = "MS3"
SheetSource4 = "MS4"
SheetSource5 = "MS5"
SheetDest1 = "CTO"
SheetDest2 = "EPSO"
SheetDest3 = "ASO"
SheetDest4 = "SO"
SheetDest5 = "GCCO"


'Defining Current Workbook

Set cwb = ThisWorkbook

'First Import

Set wbk = Workbooks.Open(Filename)

wbk.Worksheets(SheetSource1).Range("L8:M117").Copy
cwb.Sheets(SheetDest1).Range("A1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource1).Range("R8:R117").Copy
cwb.Sheets(SheetDest1).Range("C1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource1).Range("W8:W117").Copy
cwb.Sheets(SheetDest1).Range("D1").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource2).Range("L8:M117").Copy
cwb.Sheets(SheetDest2).Range("A1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource2).Range("R8:R117").Copy
cwb.Sheets(SheetDest2).Range("C1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource2).Range("W8:W117").Copy
cwb.Sheets(SheetDest2).Range("D1").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource3).Range("L8:M117").Copy
cwb.Sheets(SheetDest3).Range("A1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource3).Range("R8:R117").Copy
cwb.Sheets(SheetDest3).Range("C1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource3).Range("W8:W117").Copy
cwb.Sheets(SheetDest3).Range("D1").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource4).Range("L8:M117").Copy
cwb.Sheets(SheetDest4).Range("A1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource4).Range("R8:R117").Copy
cwb.Sheets(SheetDest4).Range("C1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource4).Range("W8:W117").Copy
cwb.Sheets(SheetDest4).Range("D1").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource5).Range("L8:M117").Copy
cwb.Sheets(SheetDest5).Range("A1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource5).Range("R8:R117").Copy
cwb.Sheets(SheetDest5).Range("C1").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource5).Range("W8:W117").Copy
cwb.Sheets(SheetDest5).Range("D1").PasteSpecial xlPasteValues


Application.DisplayAlerts = False
ActiveWorkbook.Close False
Application.DisplayAlerts = True


'Second Import

Set wbk = Workbooks.Open(Filename2)

wbk.Worksheets(SheetSource1).Range("L8:M117").Copy
cwb.Sheets(SheetDest1).Range("A112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource1).Range("R8:R117").Copy
cwb.Sheets(SheetDest1).Range("C112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource1).Range("W8:W117").Copy
cwb.Sheets(SheetDest1).Range("D112").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource2).Range("L8:M117").Copy
cwb.Sheets(SheetDest2).Range("A112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource2).Range("R8:R117").Copy
cwb.Sheets(SheetDest2).Range("C112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource2).Range("W8:W117").Copy
cwb.Sheets(SheetDest2).Range("D112").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource3).Range("L8:M117").Copy
cwb.Sheets(SheetDest3).Range("A112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource3).Range("R8:R117").Copy
cwb.Sheets(SheetDest3).Range("C112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource3).Range("W8:W117").Copy
cwb.Sheets(SheetDest3).Range("D112").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource4).Range("L8:M117").Copy
cwb.Sheets(SheetDest4).Range("A112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource4).Range("R8:R117").Copy
cwb.Sheets(SheetDest4).Range("C112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource4).Range("W8:W117").Copy
cwb.Sheets(SheetDest4).Range("D112").PasteSpecial xlPasteValues

wbk.Worksheets(SheetSource5).Range("L8:M117").Copy
cwb.Sheets(SheetDest5).Range("A112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource5).Range("R8:R117").Copy
cwb.Sheets(SheetDest5).Range("C112").PasteSpecial xlPasteValues
wbk.Worksheets(SheetSource5).Range("W8:W117").Copy
cwb.Sheets(SheetDest5).Range("D112").PasteSpecial xlPasteValues


Application.DisplayAlerts = False
ActiveWorkbook.Close False
Application.DisplayAlerts = True


Done:
MsgBox "Information loaded!"
Exit Sub
eh:
MsgBox "The following error occurred because XLS structure for selected month is not standard or data does not exist."



End Sub

Я упростил код, сосредоточив внимание только на SheetDest5, как показано ниже, но проблема сохраняется:

Sub CopySheets()
On Error GoTo eh
Dim Path As String
Dim FileA As String
Dim FileB As String
Dim Filename As String
Dim Filename2 As String
Dim SheetSource5 As String
Dim SheetDest5 As String

'Defining Strings

Path = Sheets("Config").Range("C2").Value
FileA = Sheets("Selection").Range("G23").Value
FileB = Sheets("Selection").Range("H23").Value
Filename = Path & FileA & ".xlsx"
Filename2 = Path & FileB & ".xlsx"

SheetSource5 = "MS5"
SheetDest5 = "GCCO"

'Defining Current Workbook

Set cwb = ThisWorkbook

'First Import

Set wbk = Workbooks.Open(Filename)


wbk.Worksheets(SheetSource5).Range("L8:M117").Copy
cwb.Sheets("GCCO").Range("A1").PasteSpecial xlPasteValues


Application.DisplayAlerts = False
ActiveWorkbook.Close False
Application.DisplayAlerts = True

End Sub

1 Ответ

0 голосов
/ 19 февраля 2019

После многократного просмотра кода, тестирования изменений, предложенных в комментариях, я отключил все надстройки, работающие в Excel.Наконец, причиной неправильного поведения стал «SAP-анализ для Office», а не код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...