Создать ярлык в папке на основе ссылок Excel - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблица Excel, которая используется для создания стандартизированных имен файлов для отдела продаж в компании. Это создает файлы цитат (QO) и файлы заказов (WO). Этот бит, который я сделал сейчас, однако, теперь мне нужно создать ярлык в файле заказа, который ссылается на связанный файл цитаты. Я использовал это в качестве основы, но я пытаюсь заставить его использовать ссылки на ячейки: Автоматически создавать ярлык для файла

Ниже приведен код, и я выделил, где я получите ошибку. Я пробовал с и без "С и с"

Sub CreateShortcut()

    Dim sShortcutLocation As String
    Dim strQOFolder As String, strShrtCut As String

    'place the shortcut should be created, which is in the WO folder
    sShorcutLocation = Range("C51") & "\" & CleanName(Range("C37")) & _
                        "\" & "Commercial" & "\" & Range("C39")& ".lnk" 

    strQOFolder = Range("C50") & "\" & CleanName(Range("C32")) 'path and folder name of the QO folder
    strShrtCut = CleanName(Range("C32")) 'Name of the shortcut

    'it gets the the bit below and says "Run-time error '440': Automation error
    With CreateObject("Wscript.Shell").CreateShortcut(sShortcutLocation) 'believe this starts to create the shortcut in the specified location
        .TargetPath = strQOFolder 'believe this is the path of the shortcut i want?
        .Description = "Shortcut to " & strShrtCut ' believe this is what i want the name of the shortcut to be
        .Save ' save the shortcut
End With
End Sub

Заранее спасибо:)

1 Ответ

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

Благодаря помощи @ArcherBird и @ CDP1802, пожалуйста, смотрите ниже рабочее решение. Я добавил некоторые детали, чтобы любой, как я, новичок в кодировании, мог видеть, что я сделал и что он должен делать.

Sub CreateShortcut()

    Dim sShortcutLocation As String
    Dim strQOFolder As String


    sShortcutLocation = Range("C51") & "\" & CleanName(Range("C37")) & "\" & "Commercial" & "\" & Range("C39") & "\" & CleanName(Range("C32")) & ".lnk"
    'this is the place the shortcut should be saved, with an extra level and the shortcut name i.e. to force it to save in that folder and not in the same place as that folder.
    strQOFolder = Range("C50") & "\" & CleanName(Range("C32"))
    'this is the link to where the shortcut will link to

    With CreateObject("Wscript.Shell").CreateShortcut(sShortcutLocation)
    'this is creating the shortcut and the file name using the criteria set out in sShortcutLocation
        .TargetPath = strQOFolder
        'this is setting the path for where the shortcut links to
        .Save 'saves the shortcut



End With
End Sub 

Часть CleanName удаляет все символы, не разрешенные в пути. Код для этого ниже, это не мое собственное, нашел это здесь: -

Function CleanName(strName As String) As String
'will clean part # name so it can be made into valid folder name
'may need to add more lines to get rid of other characters

    CleanName = Replace(strName, "/", "")
    CleanName = Replace(CleanName, "*", "")

End Function

Следующим шагом будет добавление в окне сообщения об ошибке. :-) Спасибо.

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