Почему мой макрос открывает предыдущий лист Excel? - PullRequest
0 голосов
/ 21 января 2020

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

Sub vendorPECOCleaner()

Dim refi As Worksheet
Dim wb As Workbook
Dim aCell As Range, Rng As Range
Dim Row As Long
Dim str1 As String, str2 As String
Set wb = ActiveWorkbook

wb.Sheets(1).Name = "Raw Data"
wb.Sheets(1).Copy After:=Sheets(Sheets.Count)
On Error Resume Next
wb.ActiveSheet.Name = "Refined"


Set refi = wb.Sheets("Refined")

refi.Rows(1).EntireRow.Delete

With refi
    Set aCell = .Range("A1:G20000").Find(What:="Invoice #", LookIn:=xlValues, LookAt:=xlWhole, _
                    MatchCase:=False, SearchFormat:=False)

If Not aCell Is Nothing Then

aCell.EntireColumn.Copy

refi.Columns("B:B").Insert Shift:=xlToRight

End If
End With

refi.Columns(2).NumberFormat = "@"

For Row = 2 To 20000
    str1 = refi.Cells(Row, 2).Value
    str2 = Left(str1, 10)
    refi.Cells(Row, 2).Value = str2
Next Row

refi.Cells(1, 2).Value = "PECO Acc#"

refi.Range("A1").AutoFilter

End Sub

1 Ответ

0 голосов
/ 21 января 2020

Если вы добрались до меня и столкнулись с проблемами, которые я описал выше, у вас есть несколько вариантов:

  1. Создать надстройку Excel

  2. Создание макроса личной рабочей книги

  3. Создание макроса ThisWorkbook, но не забудьте закрыть оригинальную рабочую книгу

1 и 2 работают нормально если в надежных расположениях есть общий диск (у меня его нет) или если вы собираетесь использовать тот же компьютер, чтобы макрос не сохранялся на вашем диске C, то это не проблема (мои коллеги используют разные компьютеры). 3 позволяет вам оставить файл xlsm на общем диске, поскольку он не привязан к надежным расположениям, и вы можете использовать его в пользовательской ленточной кнопке, если вы используете sh. Единственное, что вы должны сделать, это поставить следующую строку кода:

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

Workbooks("your_original_macro_workbook.xlsm").Close

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

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