Как найти полный сетевой путь к файлу Excel, совместно используемому в сети? - PullRequest
0 голосов
/ 17 января 2012

У меня есть лист с поддержкой макросов, который находится в общей папке на моем ПК. Этот лист, используемый для сбора некоторых данных от сотрудников, находится в общей папке в сети. Он имеет функцию, при которой пользователям отправляются письма с напоминанием, если они не могут своевременно заполнить данные. В почтовом контенте мне нравится добавлять путь к локальной сети в мой файл Excel.

Я выполняю это, добавляя код

“You can access the tool from the location " & ThisWorkbook.FullName

При отправке писем с использованием этого кода я получаю путь к этой папке как C: \ Users \ XYZ \ Hello.xlsm Я хотел бы отправить сетевой путь с IP-адресом, чтобы пользователи могли напрямую скопировать путь в прогон и получить доступ к файлу.

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

Я использую Excel 2007

Ответы [ 3 ]

1 голос
/ 18 января 2012

Ваша база, вероятно, исправлена, поэтому я бы выбрал простое решение, например:

Replace(ThisWorkbook.FullName,"C:\Users\","file:\\computername\Users\)
1 голос
/ 17 января 2012

Почему IP-адрес?Не могли бы вы использовать имя компьютера.

file:\\computername\Users\XYZ\Hello.xlsm. 

Но, если честно, я думаю, что вы настраиваете себя на какую-то боль, поступая таким образом.Почему бы не использовать HTML-форму и немного PHP, чтобы поместить данные в MySQL, которые затем можно извлечь в Excel или что-нибудь еще?

- Правка

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

http://spreadsheetpage.com/index.php/tip/retrieving_the_computer_name_or_logged_in_user_name/

0 голосов
/ 23 января 2012

Я частично решил свою проблему.Я использовал функцию для поиска имени компьютера и манипулировал ThisWorkbook.Fullname

Private Declare Function GetComputerName Lib "kernel32" _
    Alias "GetComputerNameA" _
    (ByVal lpBuffer As String, nSize As Long) As Long

Function ReturnComputerName() As String
    Dim rString As String * 255, sLen As Long, tString As String
    tString = ""
    On Error Resume Next
    sLen = GetComputerName(rString, 255)
    sLen = InStr(1, rString, Chr(0))
    If sLen > 0 Then
        tString = Left(rString, sLen - 1)
    Else
        tString = rString
    End If
    On Error GoTo 0
    ReturnComputerName = UCase(Trim(tString))
End Function    


Sub GetThePath()
    If Left(ThisWorkbook.FullName, 2) <> "\\" Then
        If Sheet4.Range("B15").Value = "No" Then
            CN = "file:\\" & Evaluate("=ReturnComputerName()") & "\"
        End If
        mynames = ThisWorkbook.Path
        mynamesa = Split(mynames, "\")
        elem = UBound(mynamesa)
        mynames = mynamesa(elem)
        mynames = mynames & "\" & ThisWorkbook.Name
        mynames = CN & mynames
    ElseIf Left(ThisWorkbook.FullName, 2) = "\\" Then
        mynames = ThisWorkbook.FullName
    End If
End Sub

Недостаток: не удается найти правильный путь, если файл находится в папке в общей папке.

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