Перейти к публикации

путь к файлу макроса


Рекомендованные сообщения

Здравствуйте господа!

Подскажите пожалуйста что в коде нужно написать чтобы выводился путь к файлу макроса который в данный момент запущен?

например тут

MsgBox(????)
в ВБ использовал Application.StartupPath, но в вба такое не катит =(

Справка у меня не работает.

Ссылка на сообщение
Поделиться на других сайтах


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

Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем pyramide
Ссылка на сообщение
Поделиться на других сайтах

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

Такие желания в принципе удовлетворяет только PDM, но чтобы так под SolidWorks... :g:

Хотя дело конечно хорошее и пожелание вполне законное.

Ссылка на сообщение
Поделиться на других сайтах

Shvg - что-то очень близкое но почему-то неработает, пока продолжу поиски именно в этом направлении

Dim path As String

path = swApp.GetCurrentMacroPathFolder

MsgBox (path)
так тоже не пашет

streamdown - в том примере сначала нужно прописать путь к файлу чтобы он потом выводился, какой в этом смысл хз, к томуже многие конструкции из VB в VBA не работают :(

поиск юзал и юзаю, но к сожалению такой подробной справки по вба как по вб не нашел

Ссылка на сообщение
Поделиться на других сайтах

Shvg - что-то очень близкое но почему-то неработает, пока продолжу поиски именно в этом направлении

Странно, что у вас не работает. Этот код прекрасно показывает, откуда был запущен макрос

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()



	Set swApp = Application.SldWorks

	Dim path As String

	path = swApp.GetCurrentMacroPathFolder

	MsgBox path

End Sub
SW2009SP5.1, WinXP SP3
Ссылка на сообщение
Поделиться на других сайтах

Странно, что у вас не работает. Этот код прекрасно показывает, откуда был запущен макрос

...

Вопрос: кем был запущен этот макрос? И каким способом: путем явного указания на файл макроса?

Получается, что задачу поска "любого места" частично решает сам пользователь - не надоест? Каждый раз указывать путь к этому "любому месту"? :-)

ИМХО кнопку этому макросу назначить не получиться...

Какова вообще главная цель данной задачи?

Через Win API : можно наверное попробовать определить процесс с таким именем (имя макроса), а уже по процессу определить исполняемый файл(путь к нему).

Если макрос имеет собственное окно, также можно через Win API определить исполняемый файл...

Ссылка на сообщение
Поделиться на других сайтах

Option Explicit

Dim swApp As SldWorks.SldWorks

Sub main()



	Set swApp = Application.SldWorks

	Dim path As String

	path = swApp.GetCurrentMacroPathFolder

	MsgBox path

End Sub
Во, вот так сработало, спасибо большое, то что надо! :laugh:

у меня было

Dim swApp As Object
и не было

Set swApp = Application.SldWorks
хорошо хоть не пришлось winapi использовать :wacko:

А кнопку мне пока не надо, хотя в чьем-то дипломе читал про добавление кнопки через настройки SW

Ссылка на сообщение
Поделиться на других сайтах

Какова вообще главная цель данной задачи?

Задача была такова:

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

Ссылка на сообщение
Поделиться на других сайтах

неа, это програмирование в visual basic, причем простенькая sub должна получиться. В бейсике не силен, а вообще яндекс - "получить путь к файлу в visual basic"

По ходу дела разговор идёт о разных вещах.

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

Ссылка на сообщение
Поделиться на других сайтах

Задача была такова:

Цитата(pyramide)

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

По ходу дела разговор идёт о разных вещах.

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

Т.е., если говорить по-русски, Вам надоть сетевой макрос - а зачем (выдержит ли макрос многопользовательскую среду)???

Может проще оставить его на рабочем месте, он же мааленький (даёшь макрос на каждое раб.место - каждому пользователь по-макросу!!)

Ссылка на сообщение
Поделиться на других сайтах

...Вам надоть сетевой макрос - а зачем (выдержит ли макрос многопользовательскую среду)???

Может проще оставить его на рабочем месте...

Например, макрос формирующий некий типичный для конкретного проекта набор рабочих плоскостей или ссылку на сопряжения. Оформлять таковой как плагин с прописыванием в установочный образ SolidWorks или копировать каждому желающему по служебной записке/телефонному звонку?

ИМХО, просто напрашивается некое подобие общезаводской библиотеки макросов, чтобы нужные можно было просто накидать в какую ни будь панель инструментов, только и всего.

Ссылка на сообщение
Поделиться на других сайтах

ИМХО, просто напрашивается некое подобие общезаводской библиотеки макросов, чтобы нужные можно было просто накидать в какую ни будь панель инструментов, только и всего.

Вот и я о том же - осилит ли макрос многопользовательскую среду (или сам макрос тут не причём, а нужны только возможности самого Солида)???

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

Ссылка на сообщение
Поделиться на других сайтах

Вот и я о том же - осилит ли макрос многопользовательскую среду (или сам макрос тут не причём, а нужны только возможности самого Солида)???

Хороший макрос осилит многопользовательскую среду, только ради этого таки потребуется профессиональный программист, что "зашьёт" идею и даже наработки юзера CAD-системы в соответствующую оболочку. Наверняка именно для этого и существуют IT подразделения.

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

Собственно говоря, какие такие особые запарки могут быть с локальной сетью предприятия? Этож вам не интернет какой ни будь. :rolleyes:

С одной стороны, не обладающий дополнительными навыками программиста пользователь CAD вообще врядли будет баловаться макросами, ну может быть за очень редким исключением порядка один из двух... трёх тысяч. С другой стороны, не обладающий продвинутыми навыками пользователя CAD-системы, а наипаче глубоким пониманием соответствующего ремесла программист во век не догадается что именно нужно автоматизировать посредством макроса. Допустим на неком предприятии появилось золотое сочетание опыта и навыков, но ведь получившиеся в итоге макросы нужно каким либо способом популяризировать и поддерживать от версии к версии CAD-системы. Можете предложить для этих целей что ни будь лучшее, чем своего рода общезаводскую библиотеку с поддержкой подлинников IT подразделением?

Ссылка на сообщение
Поделиться на других сайтах

Собственно говоря, какие такие особые запарки могут быть с локальной сетью предприятия? Этож вам не интернет какой ни будь. rolleyes.gif

Ну да, не интернет - но всё же....

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

Вот мне и интересно как этот макрос сможет это всё осилить или будет использовать возможности самого Солида????

Ссылка на сообщение
Поделиться на других сайтах

Вот мне и интересно как этот макрос сможет это всё осилить или будет использовать возможности самого Солида????

Собственно начался этот разговор со следующего заявления:

Такие желания в принципе удовлетворяет только PDM, но чтобы так под SolidWorks... :g:

То бишь если документ MCAD, ECAD или MS Office может ассоциативно копироваться с сервера на локальные машины, то почему этот фокус технически невозможен с файлами макросов?
Ссылка на сообщение
Поделиться на других сайтах

То бишь если документ MCAD, ECAD или MS Office может ассоциативно копироваться с сервера на локальные машины, то почему этот фокус технически невозможен с файлами макросов?

Копироваться макрос конечно может - а вот как будет он работать через сеть, вот это вопрос к сисадминам (или программистам)...

Т.к. макрос использует среду создаваемую Солидом на текущей машине (читай - компе)...

Но Солид позволяет работать в многопользовательской среде с одним документом, а вот как поведёт себя макрос при одновременном обращении к нему с разных рабочих мест???

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...