VBA Little Hashmap, чтобы получить проблемы с путями - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть некоторые проблемы с моим hashmap, он находится в файле .xla (дополнительный макрос), я объясняю, что я хочу: если я вызываю свой макрос с параметром (cv_source), я хочу путь к cv_source, вот мой код :

Sub path_file()
    Dim path
    Set path = CreateObject("Scripting.Dictionary")
    path.Add "cv_source", "D:\Téléchargements\CreationCV\CreationCV\Sources"
    path.Add "creation_cv", "D:\Téléchargements\CreationCV\CreationCV\"
    path.Add "save_chrono", "D:\Téléchargements\CreationCV\CreationCV\Sauvergardes_chrono"
    path.Add "save_chrono.xls", "D:\Téléchargements\CreationCV\CreationCV\Sauvergardes_chrono\Chrono.xls"
    path.Add "chrono2018", "D:\Téléchargements\CreationCV\CreationCV\Sources\Chrono2018.xls"
    path.Add "chrono", "D:\Téléchargements\CreationCV\CreationCV\Sources\Chrono.xls"
    path.Add "cv_pdf", "D:\Téléchargements\CreationCV\CreationCV\CV_pdf"
    path.Add "base_dates", "D:\Téléchargements\CreationCV\Etiquettes\Base dates.xls"
    path.Add "ariane.xls", "D:\Téléchargements\CreationCV\CreationCV\Sources\Ariane.xls"
    path.Add "import_deca", "D:\Téléchargements\CreationCV\CreationCV\Importer dans DECA.xlsm"
    Return
End Sub

Мои проблемы заключаются в следующем: - Как я могу вернуть путь? Я не могу поставить глобальную переменную для пути, потому что она не работает - Как я могу вызвать макрос в другом файле? Я выбрал файл xla в других файлах excel, но чтобы вызвать макрос, как я могу это сделать? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Итак, нет возврата, и как я могу протестировать в othersub, если это работает? Вы думаете, что моя функция здесь хорошая?

Public Function path_file(path As Collection)
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources", "cv_source"
path.Add "D:\Téléchargements\CreationCV\CreationCV\", "creation_cv"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sauvergardes_chrono", "save_chrono"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sauvergardes_chrono\Chrono.xls", "save_chrono.xls"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources\Chrono2018.xls", "chrono2018"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources\Chrono.xls", "chrono"
path.Add "D:\Téléchargements\CreationCV\CreationCV\CV_pdf", "cv_pdf"
path.Add "D:\Téléchargements\CreationCV\Etiquettes\Base dates.xls", "base_dates"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources\Ariane.xls", "ariane.xls"
path.Add "D:\Téléchargements\CreationCV\CreationCV\Importer dans DECA.xlsm", "import_deca"

End Function @ chronocidal

0 голосов
/ 15 апреля 2020

Вы можете использовать Collection вместо CreateObject("Scripting.Dictionary")

Sub path_file()

    Dim path As New Collection
    path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources", "cv_source"
    path.Add "D:\Téléchargements\CreationCV\CreationCV\", "creation_cv"


    Debug.Print path("cv_source")

End Sub

Вы даже можете иметь переменную publi c в качестве коллекции, но вы должны помнить, что вы должны заполнить ее перед использованием.

____ edit

Вы должны загружать данные один раз, а не каждый вызов.

Public path as new collection 'this is your global object (on top of module)

'this procedure should be run during exec Excel (I don't know where - in Word there is AutoExec procedure)
Public sub LoadData()

    path.Add "D:\Téléchargements\CreationCV\CreationCV\Sources", "cv_source"
    path.Add "D:\Téléchargements\CreationCV\CreationCV\", "creation_cv"
    '(...)

end sub

И в тех случаях, когда вам нужен sht from path, используйте только это: path("cv_source") в коде.

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