Форум пользователей Visio http://visio.getbb.ru/ |
|
Работа над ошибками: Error318 http://visio.getbb.ru/viewtopic.php?f=15&t=599 |
Страница 1 из 2 |
Автор: | Surrogate [ 30 май 2014, 20:04 ] |
Заголовок сообщения: | Работа над ошибками: Error318 |
Разбирая свои старые работы нашел документы из которых нельзя ничего скопировать, вылезает ошибка 318 Ошибка возникает тогда, когда в TheDoc есть формулы содержащие в себе ссылки на ячейки со страниц документа. Например Pages[Page-1]!sheet.1!prop.row_1 Digitall™ в статье Информационный Катарсис©® писал(а): Ошибка №318 (Error 318). Самая безобидная ошибка, появляется в определенных случаях, когда перемещение данных, из документа (TheDoc) до фигуры (TheSheet), осуществляется через промежуточные ячейки. Лечится простым удалением «пятого колеса», т.е. этих самых промежуточных ячеек на страницах (ThePage). моя реализация "починки, без удаления колеса"Код: Sub vsd_RepairError318() суть метода: Dim cl As Row Dim n As Integer n = 0 Dim row_name$, row_value$, row_prompt$, new_prompt$, bl As Boolean For i = ActiveWindow.Shape.RowCount(242) - 1 To 0 Step -1 row_name = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserValue).RowNameU row_value = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserValue).FormulaU row_prompt = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserPrompt).FormulaU bl = InStr(row_value, Trim("Pages[")) If bl = True Then ' n = n + 1 If n = 1 Then new_prompt = "setf(getref(user." & row_name & "), " & row_value & ")" If n > 1 Then new_prompt = new_prompt & "+setf(getref(user." & row_name & "), " & row_value & ")" Else End If Next ActiveDocument.DocumentSheet.AddNamedRow visSectionUser, "Err318fix", visTagDefault ActiveDocument.DocumentSheet.Cells("User.Err318fix.prompt").FormulaU = new_prompt Application.ActiveWindow.Shape.DeleteRow visSectionUser, ActiveWindow.Shape.RowCount(242) - 1 End Sub 1. макрос пробегается по секции User, если формула в поле Value содержит Pages[, то для нее формируется формула для замены на значение, с помощью функции SETF - формируемуя формула замены хранится в переменной new_prompt 2. Добавляется в секцию User строка User.Err318fix, в которой будет выполнена полученная в п. 1 формула 3. На всякий случай убиваем строку User.Err318fix, вдруг после каких-то умельцев придется снова лечить файл |
Автор: | Surrogate [ 10 июн 2014, 12:06 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
я смотрю мне уже плюсик за это добрый человек поставил разместил данный код на Visio Insights в комментариях к статье Error #318 Explained запись прошла премодерацию за несколько минут ! несмотря на то, что блог давно не обновляется!!! а в русскоязычном блоге визио невозможно пройти премодерацию… палим реакцию |
Автор: | Surrogate [ 26 сен 2014, 16:22 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Код: Sub vsd_RepairError318() Dim cl As Row, ss As Window Dim n As Integer n = 0 Dim row_name$, row_value$, row_prompt$, new_prompt$, bl As Boolean Set ss = Application.ActiveDocument.DocumentSheet.OpenSheetWindow If ss.Shape.SectionExists(visSectionUser, visExistsAnywhere) Then For i = ss.Shape.RowCount(242) - 1 To 0 Step -1 row_name = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserValue).RowNameU row_formula = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserValue).FormulaU row_value = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserValue).ResultStr("") row_prompt = Application.ActiveWindow.Shape.CellsSRC(visSectionUser, i, visUserPrompt).FormulaU bl = InStr(row_formula, Trim("Pages[")) If bl = True Then ' n = n + 1 If n = 1 Then new_prompt = "setf(getref(thedoc!user." & row_name & "), " & Chr(34) & Chr(34) & Chr(34) & row_value & Chr(34) & Chr(34) & Chr(34) & ")" If n > 1 Then new_prompt = new_prompt & "+setf(getref(thedoc!user." & row_name & "), " & Chr(34) & Chr(34) & Chr(34) & row_value & Chr(34) & Chr(34) & Chr(34) & ")" Else End If Next End If Debug.Print new_prompt If Len(new_prompt) > 0 Then ActiveDocument.DocumentSheet.AddNamedRow visSectionUser, "Err318fix", visTagDefault ActiveDocument.DocumentSheet.Cells("User.Err318fix.prompt").FormulaU = new_prompt Application.ActiveWindow.Shape.DeleteRow visSectionUser, ActiveWindow.Shape.RowCount(242) - 1 End If ss.Close End Sub данный код был модифицирован снова |
Автор: | Surrogate [ 09 окт 2014, 12:24 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
гы-гы удостоился ссылок на эту ветку в англоязычном форуме Интересно, кто же этот анонимоус Croc из Рязани ? |
Автор: | Tumanov [ 09 окт 2014, 13:46 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Я что-то сделал не так? Вроде, авторские права не нарушены |
Автор: | Surrogate [ 09 окт 2014, 14:04 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Tumanov писал(а): Я что-то сделал не так? Наоборот, Вы дичайше прокачали мое ЧСВ (чувство собственного величия)Я сначало было возгордился: ого, на буржуинских форумах на меня ссылаются ! А когда посмотрел профиль Croc на форуме радость прошла… |
Автор: | Майк [ 01 апр 2015, 18:31 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
День добрый! Прошу помощи. В Visio 2010 появилась вот такая ошибка: "Ошибка (318) при выполнении действия копировать. Указанная ячейка User.Value[253] не существует." Описанные выше действия не принесли результата. |
Автор: | Surrogate [ 01 апр 2015, 18:41 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
добрый день! в статье Error #318 Explained описывается несколько причин возникновения ошибки #318. Мой код исправляет только одну из них, ту что часто встречается в моей практике. выложи файл посмотрим, что с ним можно сделать ? |
Автор: | Майк [ 01 апр 2015, 18:45 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Я б выложил, но это, к сожалению, коммерческая тайна так сказать. |
Автор: | Surrogate [ 01 апр 2015, 18:55 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
печально, мои экстрасенсорные способности не безграничны последний коммент на первом листе Isuru 12 Sep 2014 9:43 писал(а): I had the same problem. Select all and right click to choose "Bring to Front". This will solve the problem. выделить на странице все и щелкнуть правой кнопкой и выбрать пункт "Переместить назад"говорят помогает… |
Автор: | Майк [ 01 апр 2015, 19:00 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Данный пункт при выделении всего содержимого листа становится недоступен. Попробую поодиночке переместить на задний план. |
Автор: | Surrogate [ 01 апр 2015, 19:10 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
честно говоря я лишь однажды тестировал этот способ, тогда у меня получилось ! сейчас нет под рукой файла с ошибкой… я не понимаю в чем смысл этой магии, но боюсь что поочередное выделение не поможет! может из выделения исключить одну фигуру и попробовать, если жалко палить военную тайну ? |
Автор: | Tumanov [ 01 апр 2015, 20:43 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Майк писал(а): Я б выложил, но это, к сожалению, коммерческая тайна так сказать. Обычно удается путем удаления половины шейпов, потом половины от половины и т.д. оставить минимальный рисунок, в котором еще есть ошибка, но никакой тайны он уже не представляет. Либо Вы в процессе удаления сами вычислите место, где сидит ошибка. |
Автор: | Майк [ 02 апр 2015, 10:15 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Способ с перемещением на задний план результата не дал. Группировка всего также не дала результата. В файле примерно треть фигур не копируется. |
Автор: | Майк [ 02 апр 2015, 10:20 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Майк писал(а): Способ с перемещением на задний план результата не дал. Группировка всего также не дала результата. В файле примерно треть фигур не копируется. Собственно файл с не копируемой фигурой удален по просьбе администратора Surrogate, на правах автора. Данный файл был создан им в апреле 2006 года, до августа 2006 года подобные файлы принесли Surrogate массу головной боли. И вот спустя 9 лет такая неожиданная встреча! |
Автор: | Surrogate [ 02 апр 2015, 11:28 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
такая ошибка вылетает при попытке копирования. я залез в шейпшит документа. в одной из строк нашел ссылку на эту несуществующую ячейку - в ячейке user.dec |
Автор: | Майк [ 02 апр 2015, 11:35 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Ага, эта самая ошибка. А как исправить? |
Автор: | Surrogate [ 02 апр 2015, 11:41 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Майк писал(а): Ага, эта самая ошибка. А как исправить? Surrogate писал(а): я залез в шейпшит документа. в одной из строк нашел ссылку на эту несуществующую ячейку - в ячейке user.dec надо было удалить из формулы эту ссылку User.Value[253]но это путь хардорных визио-пользователей, слабонервных просьба под спойлер не заглядывать Содержимое спрятано под спойлер ↓ Спойлер: ▼ Исправлено на: есть путь покороче если совсем без порева, то решение такое 1. Открываем окно редактора VBA клавишами Alt+F11 2. В нем жмем Ctrl+G 3. Вставляем в окне Immediate вставляем формулу Код: ActiveDocument.DocumentSheet.Cells("user.dec").Formula = "" 4. Жмем клавишу ↵ Enter.ибо я знаю, что тебе эта ячейка не нужна |
Автор: | Майк [ 02 апр 2015, 12:03 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
"Уррраааа, заработало" (Матроскин) Спасибо! |
Автор: | NoName [ 23 окт 2019, 19:01 ] |
Заголовок сообщения: | Re: Работа над ошибками: Error318 |
Доброго времени суток, после проделанных операций при приближении(отдалении) пропадают все элементы документа( не только этого). Помогите, что делать |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |