Индекс листа Excel Идентифицировать по уникальному номеру в макросе VBA? - PullRequest
0 голосов
/ 12 ноября 2018

Два рабочих макроса для контрольных списков и шаблонов ниже

Рабочая тетрадь = Стив Лист в рабочей тетради выделен 15286

Мне нужно добавить листы в макрос, и мне нужно знать, как найти то, что я предполагаю, является уникальным _number, чтобы я мог выполнить ту же процедуру на новом листе данных в пределах той же рабочей книги

Рабочая тетрадь содержит один и тот же макрос, единственное отличие состоит в том, что число * несколько раз

Например: контрольные списки =

Sub PublishChecklists()
'
' Saves htm version of Sheet on Server
'
Range("M8:M2000").Select
Selection.Font.ColorIndex = 0
Selection.autofilter Field:=7, Criteria1:=Array("<>Exc")
Columns("A:J").Select
Selection.EntireColumn.Hidden = True
With ActiveWorkbook.PublishObjects("Steve_**15826**")
.Title = "CHECKLIST LIST"
.Filename = "\\f:\data\Work\Checklists.htm"
.Publish (True)
.AutoRepublish = False
End With
ChDir "F:\data\Work\Today's Work"
Columns("A:J").Select
Selection.EntireColumn.Hidden = False
Selection.autofilter Field:=7
Columns("H:H").Select
Selection.EntireColumn.Hidden = True
Range("L8").Select

End Sub

Шаблоны =

Sub PublishTemplates()
'
' Saves htm version of Sheet on Server
'
Range("M8:M2000").Select
Selection.Font.ColorIndex = 0
Selection.autofilter Field:=7, Criteria1:=Array("<>Exc")
Columns("A:J").Select
Selection.EntireColumn.Hidden = True
With ActiveWorkbook.PublishObjects("Steve_**3496**")
.Title = "TEMPLATES LIST"
.Filename = "\\f:\data\Work\Templates.htm"
.Publish (True)
.AutoRepublish = False
End With
ChDir "F:\data\Work\Today's Work"
Columns("A:J").Select
Selection.EntireColumn.Hidden = False
Selection.autofilter Field:=7
Columns("H:H").Select
Selection.EntireColumn.Hidden = True
Range("L8").Select

End Sub

-

Обе работы, единственное, что кажется разным, это "15286" и "3486", так как они разные листы? если я добавлю новый лист, мне нужно знать, как я могу найти бит числа «3486», так как это будет другое число для нового листа

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

Большое спасибо за ваше время

Steve

1 Ответ

0 голосов
/ 12 ноября 2018

Просто вызовите ту же процедуру и передайте ей номер в качестве аргумента.

Ваша процедура будет похожа на:

Sub PublishLists(RefNumber As Long, Title As String)

'...
'...
'...
        With ActiveWorkbook.PublishObjects("Steve_**" & RefNumber & "**")
            .Title = Title & " LIST"

'...
'...
'...

End Sub

Затем вы бы вызвали процедуру и передали ей номер и название:

Sub Test()

    PublishLists 15826, "CHECKLIST"
    PublishLists 3496, "TEMPLATES"

End Sub  

Edit:
Я не проверял ваш код - только что настроил прием переданных аргументов и удалил все, что говорит Select или Selection.
Процедура Test здесь будет выполнять PublishLists дважды, используя разные аргументы каждый раз.

Public Sub Test()

    'The three values are passed to the "PublishLists" procedure.
    'First line would PublishObjects to "Steve_**15826**" and second to "Steve_**3496**"

    PublishLists 15826, "CHECKLIST ", "Checklists.htm"
    PublishLists 3496, "TEMPLATES", "Templates.htm"

End Sub

Sub PublishLists(RefNumber As Long, Title As String, SaveFile As String)

    With ThisWorkbook.Worksheets("Sheet1") 'Update sheet name as required.
        With .Range("M8:M2000")
            .Font.ColorIndex = 0
            .AutoFilter Field:=7, Criteria1:=Array("<>Exc")
        End With
        .Columns("A:J").Hidden = True
    End With

    With ThisWorkbook.PublishObjects("Steve_**" & RefNumber & "**") 'RefNumber variable passed to name.
        .Title = Title & " LIST" 'Title variable passed to title.
        .Filename = "\\f:\data\Work\" & SaveFile 'SaveFile variable passed to FileName
        .Publish (True)
        .AutoRepublish = False
    End With

    With ThisWorkbook.Worksheets("Sheet1") 'Update sheet name as required.
        With .Columns("A:J")
            .Hidden = False
            .AutoFilter Field:=7
        End With
        .Columns("H:H").Hidden = True
        .Range("L8").Select 'The only cell that is selected.
    End With

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