Запуск программ и открытие документов из VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Вообще это вопрос в раздел API

Функция GetModuleFileName

Описание:
function GetModuleFileName(Module: THandle; FileName: PChar; Size: Integer): Integer;

Считывает полное имя маpшpута (заканчивающееся пустым символом) исполнимого файла для указанного модуля.

Паpаметpы:
Module: Идентификатоp модуля.
FileName: Пpинимающий буфеp.
Size: Размеp буфеpа.

Возвpащаемое значение:
Фактическое число скопиpованных байт.
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Почему вопрос не сюда...

Например мне надо в программе C:\Sample\programm.exe
открыть файл из папки "C:\Sample\DataFiles,
т.е. из папки находящейся внутри относительно папки расположения выполняемого файла.

А потом эту папку Sample перенесли в другое место, например С:\user1\Sample, и программа должна
соответственно открыть файл из папки "C:\user1\Sample\DataFiles.

Как будет выглядеть программный код для определения пути к файлам в таком случае?
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Насколько я знаю VBA в exe не компилируют.

На каком языке пишите?
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

treider,

Ситуация следующая:
Я работаю в SCADA-пакете iFix, который поддерживает VBA.
Разрабатываю форму, которая отображает протокол событий, данные для этого протокола берутся из текстового файла, находящегося в папке C:\Sample\DataFiles.
Насколько я знаю VBA в exe не компилируют.
Правильно.
Затем хочу запускать этот протокол отдельно в виде exe-файла, без запуска пакета iFix.
Для некоторых наших пользователей это необходимо.
Вот поэтому и забираю форму в VB и компилирую.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Как получить в программе имя папки, из которой запускается скомпилированный файл .exe?
Напримeр запускаем C:\Sample\programm.exe
Надо получить MyPath="C:\Sample"
А нельзя ли в чистом VB как в VBA сделать Application.Path?
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Вроде как в VB такого свойства нет, но есть

Application.ExecutablePath
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Всем спасибо !!!
я все проверил, как и предполагалось, это просто решается:

в VBA работает Application.Path
а в VB работает App.Path
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Возникла необходимость запускать Сетевые подключения из Excel (конкретно одно из модемных по выбору), кто-нибудь сталкивался с этой задачей?
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Если подключение уже создано в папке "Сетевые подключения"
то можно запускать bat-файл со строкой:
rasdial "Модемное подключение" "MyLogin" "MyPassword"

или обходиться без bat-файла...

Код: Выделить всё

Private Sub CommandButton1_Click()
start "rasdial ""Модемное подключение"" MyLogin MyPassword"
End Sub

Sub start(command As String)
Set WshScript = CreateObject("WScript.Shell")
 D = WshScript.Run(command, 4, False)
End Sub
Т.е. здесь используется команда Rasdial, про которую информация приведена в справке Windows.
Есть некоторый недостаток, что подключение соединения идет через "текстовое окно", а стандартное окно подключения не вызывается.
Ответить