Операция импорта данных останавливается при запуске по ярлыку, но работает в режиме отладки - PullRequest
0 голосов
/ 05 июня 2019

У меня проблема с макросом, при запуске он останавливается при открытии исходного файла (на первом листе - со второго листа следует скопировать 3 диапазона данных). Пока он работает в режиме отладки, он работает правильно, шаг за шагом. Я новичок в VBA и не могу найти ошибку в коде. Спасибо за помощь!

У меня была проблема с проверкой, лист «Сводка» уже существует, но я решил эту проблему с помощью функции, и она работает в настоящее время.

ОБНОВЛЕНИЕ : Когда открыт исходный файл (из которого должны быть скопированы данные), макрос запускается с помощью ярлыка, но он должен открыть файл, скопировать диапазоны, вставить его на лист назначения. Если исходный файл выбран из всплывающего окна, запускаемого макросом, он открывается и макрос останавливается без копирования и вставки.

If Not sheet_exists("Summary") Then
ThisWorkbook.Sheets.Add( _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = _
"Summary"
End If

    Filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select an Inbound Report File")

Set SrcWbk = Workbooks.Open(Filename)
Worksheets("Summary").Activate
SrcWbk.Sheets("Summary").Range("A:W").Copy DestWbk.Sheets("Summary").Range("A:W")
SrcWbk.Close False

    DestWbk.Sheets("Summary").Range("A9:F9", Range("A9:F9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Summary").Select

    DestWbk.Sheets("Summary").Range("G9:H9", Range("G9:H9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("L2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Summary").Select

    DestWbk.Sheets("Summary").Range("I9:W9", Range("I9:W9").End(xlDown)).Copy
    Sheets("Current Receipt On Stock").Select
    Range("P2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Application.DisplayAlerts = False
Sheets("Summary").Delete
Application.DisplayAlerts = True
Sheets("Current Receipt On Stock").Range("E2").Select

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

ОБНОВЛЕНИЕ: вместо ярлыка я сделал кнопку как триггер и макрос работает, проблема возникает только при срабатывании ярлыка.

Спасибо за предложение удалить все Select,но главная проблема все еще возникает.

Когда вы запускаете его шаг за шагом, он работает, но не при нормальной работе?Это странно!

Правильно, странно.Я noob в VBA и пытаюсь понять код, но он останавливается, пока макрос открывает книгу в этой части:

    Filename = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a Douglas Inbound Report File")

Set SrcWbk = Workbooks.Open(Filename)

он не начинает копировать данные из "Summary" sheetна лист с тем же именем в целевой книге (где выполняется макрос):

Worksheets("Summary").Activate
SrcWbk.Sheets("Summary").Range("A:W").Copy DestWbk.Sheets("Summary").Range("A:W")
SrcWbk.Close False
0 голосов
/ 05 июня 2019

Когда вы запускаете его шаг за шагом, он работает, но не при нормальном запуске?Это странно!

Рекомендую удалить все Select, это источник ошибки!Потому что, может быть, когда вы запускаете шаг за шагом, вы выбираете лист «вручную», и поэтому ваш код работает по-другому.

Например:

Sheets("Current Receipt On Stock").Range("E2").PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks :=False, Transpose:=False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...