Запуск программ и открытие документов из VBA
Модератор: Naeel Maqsudov
Вообще это вопрос в раздел 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ованных байт.
Функция GetModuleFileName
Описание:
function GetModuleFileName(Module: THandle; FileName: PChar; Size: Integer): Integer;
Считывает полное имя маpшpута (заканчивающееся пустым символом) исполнимого файла для указанного модуля.
Паpаметpы:
Module: Идентификатоp модуля.
FileName: Пpинимающий буфеp.
Size: Размеp буфеpа.
Возвpащаемое значение:
Фактическое число скопиpованных байт.
Почему вопрос не сюда...
Например мне надо в программе C:\Sample\programm.exe
открыть файл из папки "C:\Sample\DataFiles,
т.е. из папки находящейся внутри относительно папки расположения выполняемого файла.
А потом эту папку Sample перенесли в другое место, например С:\user1\Sample, и программа должна
соответственно открыть файл из папки "C:\user1\Sample\DataFiles.
Как будет выглядеть программный код для определения пути к файлам в таком случае?
Например мне надо в программе C:\Sample\programm.exe
открыть файл из папки "C:\Sample\DataFiles,
т.е. из папки находящейся внутри относительно папки расположения выполняемого файла.
А потом эту папку Sample перенесли в другое место, например С:\user1\Sample, и программа должна
соответственно открыть файл из папки "C:\user1\Sample\DataFiles.
Как будет выглядеть программный код для определения пути к файлам в таком случае?
Насколько я знаю VBA в exe не компилируют.
На каком языке пишите?
На каком языке пишите?
treider,
Ситуация следующая:
Я работаю в SCADA-пакете iFix, который поддерживает VBA.
Разрабатываю форму, которая отображает протокол событий, данные для этого протокола берутся из текстового файла, находящегося в папке C:\Sample\DataFiles.
Затем хочу запускать этот протокол отдельно в виде exe-файла, без запуска пакета iFix.
Для некоторых наших пользователей это необходимо.
Вот поэтому и забираю форму в VB и компилирую.
Ситуация следующая:
Я работаю в SCADA-пакете iFix, который поддерживает VBA.
Разрабатываю форму, которая отображает протокол событий, данные для этого протокола берутся из текстового файла, находящегося в папке C:\Sample\DataFiles.
Правильно.Насколько я знаю VBA в exe не компилируют.
Затем хочу запускать этот протокол отдельно в виде exe-файла, без запуска пакета iFix.
Для некоторых наших пользователей это необходимо.
Вот поэтому и забираю форму в VB и компилирую.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А нельзя ли в чистом VB как в VBA сделать Application.Path?Как получить в программе имя папки, из которой запускается скомпилированный файл .exe?
Напримeр запускаем C:\Sample\programm.exe
Надо получить MyPath="C:\Sample"
Вроде как в VB такого свойства нет, но есть
Application.ExecutablePath
Application.ExecutablePath
Всем спасибо !!!
я все проверил, как и предполагалось, это просто решается:
в VBA работает Application.Path
а в VB работает App.Path
я все проверил, как и предполагалось, это просто решается:
в VBA работает Application.Path
а в VB работает App.Path
Возникла необходимость запускать Сетевые подключения из Excel (конкретно одно из модемных по выбору), кто-нибудь сталкивался с этой задачей?
Если подключение уже создано в папке "Сетевые подключения"
то можно запускать bat-файл со строкой:
rasdial "Модемное подключение" "MyLogin" "MyPassword"
или обходиться без bat-файла...
Т.е. здесь используется команда Rasdial, про которую информация приведена в справке Windows.
Есть некоторый недостаток, что подключение соединения идет через "текстовое окно", а стандартное окно подключения не вызывается.
то можно запускать 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
Есть некоторый недостаток, что подключение соединения идет через "текстовое окно", а стандартное окно подключения не вызывается.