Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 05:51

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Текстовое поле
СообщениеДобавлено: 27 фев 2016, 23:34 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
При импорте данных из Excel текстовое поле вмещает примерно 250 символов. Возможно ли увеличить этот лимит хотя бы в 2 раза?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 28 фев 2016, 02:17 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
только что пришел с ДР участника нашего форума
пива я выпил изрядно! ответ на вопрос крутится где-то рядом ?
Проблема с импортом данных фигуры в файл Excel

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 28 фев 2016, 13:23 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Мне нужно наоборот из Excel импортировать в Visio. Проверил вариант с MS Access, действительно импортируется большее количество символов. У меня динамические данные, и без обработки в Excel никак не обойтись. Связать три файла почему то не получается. Я так понимаю онлайна не будет? В офисе 365 c OneDrive или с SharePoint онлайн возможен?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 28 фев 2016, 14:12 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
А "вручную" не подойдет? Если связаться через OLE и программно перебросить.
Вот по такой связи
Код:
Dim xlSheet As Excel.Worksheet
...
shp.Text = xlSheet.Range("A1").Offset(2, 1).Formula

передается и более длинный текст.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 28 фев 2016, 14:53 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
В моем случае текст будет меняться каждый час, а может и не будет. Ладно, черт с ним, с этим текстом. Интересует онлайн. К файлу в хранилище OneDrive можно подключать внешние данные Эксель?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 10:21 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
К файлу в хранилище OneDrive можно подключать внешние данные Эксель?

Я точно не знаю. Но так как больше никто не отвечает, давайте попробуем просто порассуждать.
Что значит подключение внешних данных...
До Visio 2007 это означало только добавление ссылки на источник данных.
Начиная с Visio 2007 в файл включается не только ссылка, но и весь DataRecordSet. Такой файл можно переносить из одного места в другое и данные будут путешествовать с ним. Даже если первичный источник перестанет быть доступным. Шейпы будут связаны с этой копией данных.
Если файл положить в SharePoint, данные не оторвутся.
Естественно, наличие связи с данными никак не влияет на сам файл во время хранения. При изменении данных обновление начнется только при условии, что файл будет открыт.
Причем в случае с SharePoint скорее всего открываться будет временная копия файла, переброшенная на пользовательскую машину. (Она будет где-нибудь в temp, хотя пользователь будет считать, что открывает файл "непосредственно в SharePoint").
Значит возможность обновления рисунка зависит от того, будут ли доступны данные с пользовательской машины.
Если ссылка на данные была абсолютной и вела на расшаренный ресурс, то скорее всего будут. То есть можно считать, что "данные можно подключить".
Если в исходном файле ссылка вела на локальный файл Excel, то связь с временной копии туда не доберется. То есть пользователь увидит те данные, которые есть непосредственно в DataRecordSet, но обновить их не сможет.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 19:32 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
А "вручную" не подойдет? Если связаться через OLE и программно перебросить.
Вот по такой связи
Код:
Dim xlSheet As Excel.Worksheet
...
shp.Text = xlSheet.Range("A1").Offset(2, 1).Formula

передается и более длинный текст.


А можете по подробнее написать, что нужно делать с этим кодом. Пошагово, как передать более длинный текст из Эксель в Визио? Я в этом профан.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 21:28 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
А можете по подробнее написать, что нужно делать с этим кодом. Пошагово, как передать более длинный текст из Эксель в Визио? Я в этом профан.

Вообще-то, я думал, что Вы знакомы с макросами... Потому как это программный способ.
Ну, попробую объяснить...
Пусть есть файл Excel C:\data.xlsx
В этом файле две колонки. В первой номера: 1, 2, 3...
Во второй - длинные тексты.
Пусть есть файл Visio и на активной странице есть несколько шейпов, образованных от мастер-шейпа m1. Шейпы имеют пользовательское свойство Prop.Index. И оно имеет значение 1 у одного шейпа и 2 у другого.
Тогда если мы выполним макрос ttt, то в качестве текста в первом шейпе увидим текст из ячейки B1, а у второго - из ячейки B2.
Код:
Dim wbk As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim sh As Visio.Shape

Sub ttt()
    Dim app As Excel.Application
    Set app = CreateObject("Excel.Application")
    Set wbk = app.Workbooks.Open("C:\data.xlsx")
    Set xlSheet = wbk.Worksheets(1)
   
    shpID = xlSheet.Range("A1").Offset(0, 0)
    Set sh = FindShape(shpID)
    If Not sh Is Nothing Then
        sh.Text = xlSheet.Range("A1").Offset(0, 1).Formula
    End If
   
    shpID = xlSheet.Range("A1").Offset(1, 0)
    Set sh = FindShape(shpID)
    If Not sh Is Nothing Then
        sh.Text = xlSheet.Range("A1").Offset(1, 1).Formula
    End If
   
    app.Quit
End Sub

Function FindShape(ByVal id As Integer) As Visio.Shape
    Dim shp As Visio.Shape
    Set FindShape = Nothing
    For i = 1 To ActivePage.Shapes.Count
        Set shp = ActivePage.Shapes(i)
        If Not shp.Master Is Nothing Then
            If StrComp(shp.Master.Name, "m1") = 0 Then
                If shp.Cells("Prop.index") = id Then
                    Set FindShape = shp
                End If
            End If
        End If
    Next
End Function


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 21:34 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Макрос запускается в Visio, открывает книгу Excel, первый лист.
Потом выбирает идентификатор из ячейки A1 и с помощью функции FindShape ищет на активном листе Visio шейп с таким идентификатором. Если нашел, сует туда текст из B1.
Потом повторяет такую же операцию для второй строки.
И все.
--------
Здесь показан только принцип.
Для нормальной работы может понадобиться макросом определить размер передаваемой области данных, чтобы все сделать красиво в цикле, а не простым дублированием нескольких строк кода, как у меня.
Добавить диалоговое окошко для открытия файла Excel.
Предварительно подготовить (или автоматом нарисовать) нужные шейпы.
И т.д.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 21:36 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Вот файлы примера:


Вложения:
file.vsd [24.5 Кб]
Скачиваний: 170
data.xlsx [9.53 Кб]
Скачиваний: 120
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 22:00 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Большое спасибо. Буду пробовать


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 23:07 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
skov писал(а):
При импорте данных из Excel текстовое поле вмещает примерно 250 символов.
а как изначально была выполнена привязка ячеек Excel к фигурам Visio ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 29 фев 2016, 23:38 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Импортировал книгу, а далее перетянул строки на фигуры. После Вставка - Поле - Данные фигуры - Имя поля. Я увидел, что в примере выше, текст импортируется без макроса с более чем 600 символов. В чем тогда может быть проблема?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 00:06 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Следующее предположение - формат файла Excel.
Я сначала пример готовил в формате .xls. И строки обрезались.
Потом сохранил в .xlsx - стали длинными.
Но в тот момент у меня была задача - доделать пример, поэтому дальше исследовать не стал.
Так что, вполне возможно, что в старших версиях Excel проблема снимается.
---
Причем работал я в обоих случаях в Excel 2007, но сохранял в разных форматах. (Это уже в привычку вошло - сохранять в предыдущем формате, чтобы можно было более ранней версией читать).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 00:09 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
skov писал(а):
Импортировал книгу, а далее перетянул строки на фигуры. После Вставка - Поле - Данные фигуры - Имя поля
геммороемкий способ.
skov писал(а):
Я увидел, что в примере выше, текст импортируется без макроса с более чем 600 символов.
имеется в виду вариант с экспортом в access ?
skov писал(а):
В чем тогда может быть проблема?
около 5 лет я не пользуюсь связыванием данных с фигурами штатными средствами. поэтому это скорее мое предположение, чем 100% знание.
думаю, что разработчики почему-то ввели такое ограничение.

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 00:15 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
У меня в Экселе было около 1000 строк. Все по удалял оставил одну фигуру в визио и одну строку в базе. Лимит на символы увеличился в более чем в 2 раза. Формат vsdx


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 00:29 
Не в сети

Зарегистрирован: 07 фев 2016, 16:32
Сообщений: 19
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
По поводу макроса для вставки данных в фигуру. Я так понимаю, что файл эксель может быть периодически открываться и закрываться для заполнения данных и это на работу макроса ни как не влияет? Насколько надежный способ? Можно дополнить макрос чтобы он запускался по расписанию?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 01:28 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Так что, вполне возможно, что в старших версиях Excel проблема снимается.
возможно у меня кривые руки и я не способен работать с моднейшими фичами от MS. тестировал связку эксель 2010 и визио 2010
Изображение
у меня если в ячейке более 255 символов, обрезание получается по самое "не балуйся". и в окне внешних данных и тексте фигуры получаются пусто !!!
Изображение
независимо от расширения книги эксель: xls или xlsx
skov писал(а):
Я так понимаю, что файл эксель может быть периодически открываться и закрываться для заполнения данных и это на работу макроса ни как не влияет?
не будет влиять, если в макросе должна быть проверка если книга закрыта, макрос ее откроет.
skov писал(а):
Насколько надежный способ?
если не удалять строки в эксель и фигуры визио, то будет надежно. не уверен на 100% надежности если удалять фигуры или строки при штатной связке визио с эксель
если не военная тайна, скажи хоть что это за система слежения такая ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 03:25 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
skov писал(а):
При импорте данных из Excel текстовое поле вмещает примерно 250 символов. Возможно ли увеличить этот лимит хотя бы в 2 раза?

А как именно ты их импортируешь? У меня вроде не обрезаются... попробовал до 2000 - проблем нет.
Данные -> Связать с данными -> Выбрать файл Excel?

Насчет онлайна. Насколько я знаю, конкретно к файлу Excel, который лежит на OneDrive или в Google Docs в интернете, привязаться нельзя.
Но легко можно к OneDrive "для бизнеса" (т.е. к списку шарепоинта по сути)

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Текстовое поле
СообщениеДобавлено: 01 мар 2016, 10:25 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
Я так понимаю, что файл эксель может быть периодически открываться и закрываться для заполнения данных и это на работу макроса ни как не влияет? Насколько надежный способ?

В принципе, может влиять.
По правилам сначала нужно попытаться выполнить GetObject. А если получим ошибку (нет открытого Excel), то выполнить CreateObject.
С другой стороны, если открыть лишний экземпляр приложения, то тоже страшного ничего не должно быть.
Короче, хорошо бы погонять и перепроверить. Уверенного ответа нет.
Цитата:
Можно дополнить макрос чтобы он запускался по расписанию?

Можно добавить таймер, но я бы этого делать не стал.
У себя в похожей ситуации я использовал назначенные задания Windows. Добавил WSH скрипт, который запускается по заданию. А уже из скрипта открываю Visio и выполняю в нем макрос. У меня этот макрос сначала обновляет файл Visio по данным из БД, потом сохраняет документ в PDF на SharePoint. Работает уже больше года и вроде бы без претензий.
Промежуточный скрипт хорош еще и тем, что может выполнить дополнительные операции. Например, сделать копию файла - источника данных или что-то преобразовать...
Это я к тому, что можно скачать источник из удаленного хранилища на свою машину и запускать обновление по этой копии.
Выглядит он примерно так
Код:
   Option Explicit
   Dim vApp
   Dim vDoc
   Set vApp = WScript.CreateObject("Visio.Application")
   Set vDoc = vApp.Documents.Open("D:\aaaa1.vsd")
   Call vDoc.PDFs
   vDoc.Close
   Set vDoc = vApp.Documents.Open("D:\aaaa2.vsd")
   Call vDoc.PDFs
   vDoc.Close
   vApp.Quit

В этом фрагменте обновляются и публикуются два файла Visio.
Вот прямо этот код сидит в файле .vbs и запускается по расписанию.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB