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

Форум по вопросам применения и программирования в Visio
Текущее время: 20 окт 2018, 20:51

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 10:07 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
egoist писал(а):
Цитата:
В UserForm2
Код:
Sub UserForm2_load()
Set p1 = UserForm1.txt1.Value


он ругается на .txt1. пишет Method or data member not found


надо убедиться, что txt1 действительно есть на форме 1, возможно имя не совпадает…


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 10:32 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Цитата:
возможно в визио в настройках не прописаны пути к наборам твоих фигур.
т.е. на одном компе настроено, на другом нет.
в визио 2007 например это делается в: Сервис-Параметры-Дополнительно - кнопка "пути к файлам"


Попробовал добавил этот набор но всё равно не работает...Все библиотеки проверил в референс все галочки стоят как и на моём компе...но соседний комп вообще отказывается видеть эту библиотеку...хотя она ведь открыта в визио но постоянно ошибка((((((((((((


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
egoist писал(а):
У меня ещё такой вопрос я совершенно не знаю что делать((
программа полностью написана, программа довольно большая, суть программы в том что она расставляет шейпы по страницам в задданных координатах...Используется ОДИН набор в нём около 120 шейпов которые он расставляет...программа работает отлично всё делает как надо но только на том компе на котором она была написана...то есть я переношу этот документ визио с макросом на другой комп пытаюсь запустить а она пишет ошибку в строке когда загружаю набор
Код:
Set stnObj = Documents("Набор.vss")
вот указывает на stnObj и пешет ошибка набор не найден...хотя набор открыт из визио, совершенно не понимаю в чём дело потому что на моём компе работает а на соседнем нет(((

может это из за того что набор очень большой? он 3 метра весит и в нём около 120 шейпов? Очень нужна помощь...


9rey писал(а):
возможно в визио в настройках не прописаны пути к наборам твоих фигур.
т.е. на одном компе настроено, на другом нет.
в визио 2007 например это делается в: Сервис-Параметры-Дополнительно - кнопка "пути к файлам"

Стенсил "набор.vss" по умолчанию находится в папке "мои документы". Путь к этой папке для разных компов и даже разных учетных записей на одном компе будет разным! Например в Win7
C:\Users\Ivanov\Documents и C:\Users\Petrov\Documents


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 12:47 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
предлагаю закрыть тему азы вба :)
просто создавать новые темы - а то здесь смешалось все :)


Последний раз редактировалось Surrogate 21 май 2012, 13:02, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 12:47 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 897
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
egoist писал(а):
Цитата:
возможно в визио в настройках не прописаны пути к наборам твоих фигур.
т.е. на одном компе настроено, на другом нет.
в визио 2007 например это делается в: Сервис-Параметры-Дополнительно - кнопка "пути к файлам"


Попробовал добавил этот набор но всё равно не работает...Все библиотеки проверил в референс все галочки стоят как и на моём компе...но соседний комп вообще отказывается видеть эту библиотеку...хотя она ведь открыта в визио но постоянно ошибка((((((((((((


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

вот в этом месте и пропиши свой путь, где должен лежать твой набор.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 13:09 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 897
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
Цитата:
А зачем нужны Module1, Module2, и т.д. и ClassModule? к ним как то можно обращаться?


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

модуль класса - если не знаете, что такое классы в программировании, то лучше познакомиться с основами ООП (объектно ориентированного программирования). В кратце: модуль класса - это шаблон объекта, содержащий в себе набор переменных, свойств и методов с признаками видимости (private/public), а также событий, генерируемых данным объектом, и имеющий конструктор и деструктор (методы инициализации объекта и его уничтожения). По такому шаблону в дальнейшем штампуются объекты, имеющие весь функционал описанный в этом классе-модуле. в таком модуле можно писать обработчики событий.

ThisDocument - не что иное, как объект текущего открытого документа (файла) визио, в котором вы работаете в данный момент. Он имеет кучу свойств, методов и событий, которые вы можетет увидеть в объектном браузере по клавише F2. также позволяет писать в своем теле обработчики событий.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 21 май 2012, 16:42 
спасибо за помощь но решение нашлось тем что подключил в референсе объекты visual basic for application там их 4 штуки...называются одиннаково но библиотеки разные...всё работает спасибо


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 10:35 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Set stnObj = Documents("Набор.vss")

на другом компе снова ошибка.......что же сделать???


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 10:39 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
по моему вчера в этой теме кто то писал как можно программно добавить набор...или объявить набор?но сегодня не могу найти этого сообщения


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 10:42 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
да, я писал ! и тоже не могу найти :(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 12:30 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Код:
Sub mmm()
Application.Documents.Open Application.MyShapesPath & "\набор.vss"
Set st = Documents("набор.vss")
End Sub

попробуй на своем компе, сначала программно открыть этот стенсил, а потом присваивать значение переменной st


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 12:45 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Сделал так как вы сказали но теперь он указывает на строку вставки листа и пишет что данная функция сейчас отключена..хотя я ни чего не отключал

Код:
Dim DiagramServices As Integer
    DiagramServices = ActiveDocument.DiagramServicesEnabled
    ActiveDocument.DiagramServicesEnabled = visServiceVersion140

    Dim UndoScopeID1 As Long
    UndoScopeID1 = Application.BeginUndoScope("Вставить страницу)
    Dim vsoPage1 As Visio.Page
   [b] Set vsoPage1 = ActiveDocument.Pages.Add[/b]
    vsoPage1.Name = "Титул1"
    vsoPage1.Background = False
    vsoPage1.Index = 100
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPage, visPageWidth).FormulaU = "296.99999999932 mm"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPage, visPageHeight).FormulaU = "209.99999999992 mm"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPage, visPageDrawSizeType).FormulaU = "3"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPage, 38).FormulaU = "2"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLOSplit).FormulaForceU = "1"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPrintProperties, visPrintPropertiesPageOrientation).FormulaU = "2"
    vsoPage1.PageSheet.CellsSRC(visSectionObject, visRowPrintProperties, visPrintPropertiesPaperKind).FormulaU = "8"
    vsoPage1.PageSheet.CellsSRC(visSectionUser, 0, visUserValue).FormulaForceU = ""
    Application.EndUndoScope UndoScopeID1, True

    Dim UndoScopeID2 As Long
    UndoScopeID2 = Application.BeginUndoScope("Ориентация листа")
    Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPrintProperties, visPrintPropertiesPaperKind).FormulaForceU = "9"
    Application.EndUndoScope UndoScopeID2, True

    Dim UndoScopeID3 As Long
    UndoScopeID3 = Application.BeginUndoScope("Размеры листа")
    Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPage, visPageWidth).FormulaForceU = "8.26771653543"
    Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPage, visPageHeight).FormulaForceU = "11.6929133858"
    Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPrintProperties, visPrintPropertiesPageOrientation).FormulaForceU = "1"
    Application.EndUndoScope UndoScopeID3, True


    Set st = Documents("autobook.vss")
   
    Set mastTitul1 = stnObj.Masters("Òèòóë1")
   
     
    Set mastTitul = stnObj.Masters("Titul")
    Set mastNomtitul = stnObj.Masters("Nomtitul")
    Set mastPechat = stnObj.Masters("Pechat")
   
   
    Set shpTitul1 = ActivePage.Drop(mastTitul1, 4.1339, 5.854)
    Set shpTitul = ActivePage.Drop(mastTitul, 4.449, 4)
    Set shpNomtitul = ActivePage.Drop(mastNomtitul, 5.473, 3.11)

end sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 13:42 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
в файле до момента запуска макроса был лист "Титул1" ? скорее всего уже был, удали его и макрос пойдет :)
явно ошибочный кусок кода !
Код:
Set stnObj = Documents("autobook.vss")
   
    Set mastTitul1 = stnObj.Masters.Item("Òèòóë1")
   
     
    Set mastTitul = stnObj.Masters.Item("Titul")
    Set mastNomtitul = stnObj.Masters.Item("Nomtitul")
    Set mastPechat = stnObj.Masters.Item("Pechat")

почему не хочет дропать мастера на лист не пойму :(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 13:45 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
А есть ещё какой нибудь способа перехода на нужный лист?
потому что есть несколько сабов(1 лист - 1 саб) и каждый саб нужно писать на нужный лист, я пользуюсь вот этим кодом

Код:
Application.ActiveWindow.Page = Application.ActiveDocument.Pages.ItemU("Титул 2")


Но она отказывается работать и пишет что имя не найдено хотя имя правильное и точное...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 13:47 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
в файле до момента запуска макроса был лист "Титул1" ? скорее всего уже был, удали его и макрос пойдет

Не было...
я уже создал все эти листы сам теперь надо просто шейпы правильно расставить что бы он переходил на следущий лист...в начале каждого саба прописываю какой лист делать активным...код выше в сообщении


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 14:08 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
egoist писал(а):
А есть ещё какой нибудь способа перехода на нужный лист?
потому что есть несколько сабов(1 лист - 1 саб) и каждый саб нужно писать на нужный лист, я пользуюсь вот этим кодом

Код:
Application.ActiveWindow.Page = Application.ActiveDocument.Pages.ItemU("Титул 2")


Но она отказывается работать и пишет что имя не найдено хотя имя правильное и точное...


попробуй использовать Application.ActiveDocument.Pages.Item("Титул 2"), ты как вставлял листы в документ ?
если ты сначала добавил лист например Page-2, а потом переименовал его в Титул 2, то ItemU не будет работать. Он работает, только с родными именами - без последующих переименований.

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

в начале саба объяви переменную Pg

Код:
dim Pg as Page
' там где нужно присвой переменной Pg нужное тебе значение, код такой
Set Pg = Activedocument.Pages.Item("имя нужной в этот момент страницы")


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 17:34 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Код:
Sub mmm()
Application.Documents.Open Application.MyShapesPath & "\набор.vss"
Set st = Documents("набор.vss")
End Sub

попробуй на своем компе, сначала программно открыть этот стенсил, а потом присваивать значение переменной st



Всё равно не помогает? в чем может быть проблема? Почему то она на моём компе работает а на соседнем вообще отказывается...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 18:46 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 22 май 2012, 19:05 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
макрос его вообще не видит...пишет что библиотека не найдена...хотя в самом визио открыт и в расположение файлов добавил...но безрезультатно(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 23 май 2012, 00:19 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
egoist писал(а):
Set st = Documents("autobook.vss")

Set mastTitul1 = stnObj.Masters("Òèòóë1")


Set mastTitul = stnObj.Masters("Titul")
Set mastNomtitul = stnObj.Masters("Nomtitul")
Set mastPechat = stnObj.Masters("Pechat")

в вышеуказанном коде выделил оранжевым - присвоение переменной st - набора autobook.vss
далее красным выделил, коды присвоения переменным мастеров. только там ссылка уже идет на другую переменную stnObj! что неужели так и задумано ?
думаю, в этой ситуации будет не лишним ЯВНО ОБЪЯВИТЬ все переменные в начале саба ! возможно код не работает, т.к. непонятна размерность большинства переменных


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

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



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

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


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

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