Имя файла в нескольких модулях - PullRequest
0 голосов
/ 28 января 2019

У меня есть 5 разных модулей, которые содержат одинаковые имена файлов.Например, модуль 1-5 имеет такой код sFile = "Файл данных для CIP Split.xlsx". Я хотел бы обновить это имя файла для всех модулей один раз, но не могу понять, как это сделать.

пытался назвать его общедоступным, но, возможно, не сделал это правильно

Sub ALL_Run_First()

    Application.ScreenUpdating = False
    Dim Wb As Workbook
    Dim usedrng As Range, lastrow As Long
    Dim sFile As String
    Set usedrng = ActiveSheet.UsedRange
    lastrow = usedrng(usedrng.Cells.Count).Row

    sFile = "Data File for Test Split.xlsx"     
    sFile1 = "Test Template.xlsm"        

    Application.DisplayAlerts = False     

    If CheckFileIsOpen(sFile) = False Then        
        Workbooks.Open stPath & sFile, UpdateLinks = False
    End If
    Application.DisplayAlerts = True

Когда я пытаюсь сделать общедоступный файл, я не могу найти файл.Модуль 1-5 имеет такой же код, поэтому я хотел бы, чтобы он обновлял все модули, когда я меняю имя файла (обычно раз в год)

Спасибо всем, кто выручил, он был действительно признателен!Я создал скрытый лист настроек и сделал ссылку на этот лист в коде.

sFile = ThisWorkbook.Sheets ("Настройки"). Диапазон ("A2"). Значение

SFile1 = ThisWorkbook.Sheets ("Настройки"). Диапазон ("A3"). Значение

Я обновил все модули, чтобы использовать это, и теперь мне просто нужно обновить лист настроек, и он будет кормить остальные модули.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Просто чтобы предоставить альтернативу @ превосходному ответу dwirony - семантически, имя файла не является Const (Const Pi = 3.14159 будет одним), ... особенно если оно должно бытьобновляется каждый год!

Это значение данные , а не код .Лучшее решение - полностью удалить его из кода.Одним из способов достижения этого может быть наличие (скрытого?) Листа «настроек» с определенной именованной ячейкой (скажем, DataFilePath), которая содержит имя файла для использования.

Затем вы можете назвать этолист "settings" (установите для его свойства (Name) значение, например, SettingsSheet), а затем в коде этого листа вы можете открыть открытое свойство, которое возвращает значение этой ячейки:

Public Property Get DataFilePath() As String
    DataFilePath = Me.Range("DataFilePath").Value
End Property

Теперь в 5 местах, где имя файла жестко закодировано, замените его на SettingsSheet.DataFilePath.

В следующий раз, когда нужно изменить имя файла, не нужно изменять код - только содержимое ячейки, котораяс именем DataFilePath на этом листе SettingsSheet.

0 голосов
/ 29 января 2019

Похоже, вы ищете Public Const - см. Ниже:

Модуль 1:

Public Const mystring = "Hello!"
Sub Test()

'There's nothing here!

End Sub

Модуль 2:

Sub Test2()

MsgBox mystring

End Sub

И работает Test2 производит:

img1

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