On Error GoTo 0
Я так понимаю в случае возникновения ошибки перейти к метке 0, а где эта метка, если предположить что в начало процедуры
тогда вопрос зачем туда, по второму кругу?? имеются ли ещё такие специальные метки например в конец цикла
Для чего нужно On Error GoTo 0, куда переходит кокретно я так и не понял??????????
On Error Resume Next
Открыл чистый лист набрал слово поставил на него ссылку на существующую папку взяло её удалило, почему?????????
'ссылка на папку или файл
On Error Resume Next
If (InStr(dest, "../") = 1) Or (InStr(dest, "./") = 1) Then
dest = ActiveDocument.Path & "" & dest
End If
x = GetAttr(dest)
If err.Number <> 0 Then
ActiveDocument.Fields(i).Unlink: Удалено_ссылок = Удалено_ссылок + 1
End If
On Error GoTo 0
Приведите пожалуйста пример как мне надо поставить ссылку специально чтобы наткнуться на это сообщение об ошибке
Как я поставил ссылку
в файле выделил часть текста нажал Вставить гиперссылку нажал в левом верхнем углу Файлом, вэб страницей, выбрал файл
потом нажал в правом верхнем углу закладка и выбрал её
Почему Вы говорите "правка руками" не предлагать, в вопросе по этому ничего не сказано, код должен справиться с любыми вариантами
ЭТА ССЫЛКА НЕ ПУСТАЯ!!!!!, А ЕЁ УДАЛИЛ ВБА, ПО ВАШЕЙ УКАЗКЕ, ИСПРАВЬТЕ ПОЖАЛУЙСТА
Dim bm As String
Dim src As String
Dim re_bm, ms, d, adn, cdn
Function isPathOfFileName(ByVal st As String) As Boolean
isPathOfFileName = ((InStr(st, ".") > 0) Or (InStr(st, "..") > 0) Or (InStr(st, "\") > 0) Or (InStr(st, "/") > 0))
End Function
Sub getTargets(st As String)
Set ms = re_bm.Execute(st)
bm = ""
src = ""
If (ms.Count = 1) Then
If (isPathOfFileName(ms(0))) Then
src = ms(0)
Else
bm = ms(0)
End If
End If
If (ms.Count = 2) Then
If (isPathOfFileName(ms(0))) Then
src = ms(0)
bm = ms(1)
Else
src = ms(1)
bm = ms(0)
End If
End If
If (src <> "") Then
src = Replace(src, """", "")
src = Replace(src, "file:///", "")
src = Replace(src, "%20", " ")
End If
If (bm <> "") Then
bm = Replace(bm, """", "")
End If
End Sub
Sub q177488()
Dim x As Integer
Dim fcount As Integer
Dim hl As String
Set re_bm = CreateObject("VBScript.RegExp")
With re_bm
.Global = True
.Pattern = "\x22.+?\x22"
End With
fcount = ActiveDocument.Fields.Count
For i = fcount To 1 Step -1
If (ActiveDocument.Fields(i).Type <> wdFieldHyperlink) Then
GoTo Skip
End If
hl = ActiveDocument.Fields(i).Code.Text
' ссылки на страницы в интернете и электронные письма не обрабатывать
If (InStr(hl, "mailto:") > 0) Or _
(InStr(hl, "http://") > 0) Then
GoTo Skip
End If
Call getTargets(hl)
' получение значений полей ссылок
' Ссылка на папку или файл
If (src <> "") Then
On Error Resume Next
If (InStr(src, "./") = 1) Or (InStr(src, "../") = 1) Then
' относительные пути -> в абсолютные
src = ActiveDocument.Path & "" & src
End If
x = GetAttr(src)
If err.Number <> 0 Then ' если ссылка в несуществующем направлении
Beep
ActiveDocument.Fields(i).Unlink ' преобразовать в текст
Else
If (x <> 16) Then ' если ссылка на файл
If (bm <> "") Then ' и есть ссылка на закладку в нем
adn = ActiveDocument.Name
Documents.Open src, ReadOnly = True
cdn = ActiveDocument.Name
flag = (ActiveDocument.Bookmarks.Exists(bm) = False)
Documents(cdn).Close
Documents(adn).Activate
If flag Then ' и она не найдена
Beep
ActiveDocument.Fields(i).Unlink ' преобразовать в текст
End If
End If
End If
End If
On Error GoTo 0
GoTo Skip
End If
If (bm <> "") Then ' если ссылка на закладку в текущем документе
If (ActiveDocument.Bookmarks.Exists(bm) = False) Then ' но она не найдена
Beep
ActiveDocument.Fields(i).Unlink ' преобразовать в текст
End If
GoTo Skip
End If
Skip:
Next i
End Sub
{HYPERLINK "file:///D:\\MyDoc\\RfPro\\Вещий%20Олег.doc" \l "q#q"}
Что в данном случае обозначает символ #?
Согласно теориии я не знаю откуда появляются эти значения q#q
Но думаю что это типа повторение мать учения q q или что то вроде Баден баден, одним словом надо теорию знать, и всё станет ясно, где посмотреть я не знаю
Но Вы же прекрасно понимаете, что знак # надо удалять, а справа и слева от него будут одни и те же символы, в данном случае q и q
Я вот пошёл у Вас на поводу имею в виду со ссылкой типа РЭФ, не знаю, кто ими пользуется?
Будем договариваться: ссылками считать то что, ставиться обычным способом через вставить гиперссылку, и после того как поставил пользователь она выделяется синим цветом и подчёркиванием, а после её просмотра меняет цвет и нажав на её выделяется объект будь то закладка, папка, файл.
То есть будем пользоваться следующими строками:
Цикл = ActiveDocument.Hyperlinks.Count
Имя = ActiveDocument.Hyperlinks(i).Name
ActiveDocument.Hyperlinks(i).Delete и удалится не выделяясь
и в переменную Имя насколько я понял попадёт всё то что нужно в том числе без злополучного знака #
За моё время не беспокойтесь
Вы говорите Свойство Name не является подходящим для получения нужной информации
Сделайте как считаете нужным
Я правильно понял, что в представленном Вами коде от 03.04.2010, 21:16 вставив его, появится две разделяющие полосы
Что прямо такой уж великий код без функций и Call не обойтись????????????? Вы никогда не получали Ту ларге????, я получал до этого Вам далеко!!!!!!!!!!!!
В этой части Вы не ответили
Sub getTargets(st As String)
Set ms = re_bm.Execute(st) - так вот здесь ошибка № 424??????? почему????????
Опять проблема высылаю модуль ... И вот там в файле лдну единственную ссылку удаляет, но она не пустая, почему????
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.