Помогите плизз... Как с помощью VB можно запустить Word -овский макрос, для текстового документа?
Как дать программе привелегии для выключения компа (win XP) [Ответ]
AleksandrD 14:06 18.09.2006
Сообщение от Wolf82:
Помогите плизз... Как с помощью VB можно запустить Word -овский макрос, для текстового документа?
Нечетко задача поставлена как-то.......
Наверное, так:
в VB:
Set WordApp = CreateObject("Word.Application")
Далее с этим объектом работаем как в обычном VBA для Word - открываем файл с макросом, запускаем его вроде как через WordApp.RUN
Сообщение от Wolf82:
Как дать программе привелегии для выключения компа (win XP)
Что значит "дать привелегии"? Если у учетки, под которой она запускается, эти права есть, то и у программы будут. Иначе запускать надо под учеткой с другими правами, к примеру, через runas
[Ответ]
Wolf82 09:49 19.09.2006
данная программа под XP комп не вырубает, нужно с помощью функции нужно с помощья api функции TOKEN_PRIVILEGES "разрешить" программе выполнить данную задачу, а я не знаю не синтаксиса этой функции ни ее параметров ни ее констант
Option Explicit
Private Declare Function ExitWindowsEx& Lib _
"user32" (ByVal uFlags&, ByVal wReserved&)
' константы, необходимые для выхода из Windows
Private Const EWX_FORCE = 4 ' закрытие неактивных приложений
Private Const EWX_LOGOFF = 0 ' выход из системы
Private Const EWX_REBOOT = 2 ' перезагрузка
Private Const EWX_SHUTDOWN = 1 ' закрытие системы
Private Sub Command1_Click()
Dim lresult As Variant
lresult = ExitWindowsEx(EWX_LOGOFF, 1&)
End Sub
кстати под 98 работает на ура
Помогите!!!! Help!!! [Ответ]
Wolf82, как сделать импорт WinAPI в VB(A) - есть такой справочник - API-Guide. В нем все функции с описанием параметров и примерами использования. Весит всего 3мб [Ответ]
Wolf82 11:11 20.09.2006
А ссылочку не дашь?
и еще пытаюсь с помощью VB открыть документ Word и запустить для него макрос (написан на VBA), документ открывает, но макрос не запускает, вот код программы, мож посоветует кто-нить как это сделать
Private Sub Command1_Click()
Dim puth As Variant
Dim WordApp As Word.Application
Dim WordApplication As Variant
puth = "C:\R_4_40550.RTF"
Dim objWord As New Word.Application
objWord.Visible = True
objWord.Documents.Open (puth)
Set objWord = Nothing
Dim appWord As New Word.Application
Set WordApp = CreateObject("Runing")
appWord.Run
End Sub
макрос объявлен как public
[Ответ]
Wolf82 11:11 20.09.2006
Сообщение от Yandex: Wolf82, как сделать импорт WinAPI в VB(A) - есть такой справочник - API-Guide. В нем все функции с описанием параметров и примерами использования. Весит всего 3мб
Вызов макроса (писал на Windows Script Host, но для VBA думаю то же заработает)
Сообщение от :
' Создаем объект файловой системы
set objFSO = CreateObject("Scripting.FileSystemObject")
' Находим текущую папку
set objF = objFSO.GetFolder(".")
' Создаем экземпляр Excel, c которым будем работать
set objXL = WScript.CreateObject("Excel.Application")
' Видимость этого экземпляра - у меня False, потому как не надо было видеть
objXL.Visible = False
' Открываем Книгу MyWinMin.xls
objXL.Workbooks.Open (objF.Path & "\MyWinMin.xls")
' Вызываем макрос Main из открытой книги
objXL.Run "MyWinMin.xls!Main"
' Закрываем Excel
objXL.quit
Вообщем, если не понятно что, пиши лучше в аську - пояcню [Ответ]
MadFish 09:04 21.09.2006
А вот господин Yandex, не умеет читать даже по-русски!!!
Автор спрашивал про запуск макроса в WORD и из VB, а ему прислали запуск Excell и на Script Host разговор слепого с глухонемым. Я валяюсь. [Ответ]
В принципе, зная как что делается на одном языке, легко переделать все то же самое под другой. Даже так вот жизнь может загнуть=)
[Ответ]
Yandex 10:19 21.09.2006
Из справки по скриптовым технологиям от MS
Сообщение от :
If you already know Visual Basic or Visual Basic for Applications (VBA), VBScript will be very familiar. Even if you do not know Visual Basic, once you learn VBScript, you are on your way to programming with the whole family of Visual Basic languages.
Весьма странно, что MadFish этого не заметил.
[Ответ]
MadFish 11:52 21.09.2006
Как вы господин Yandex, смогли заметить из моих постов (если таки удосужились их прочесть), я отнюдь не гуманитарий (кстати очень жаль, т.к. это сильно обедняет мою личность). Но, даже оставаясь математиком и программистом, я не утратил умения читать, думать и отвечать на поставленный вопрос. А по поводу вашей цитатки:
1 раз уж вы утверждаете, что авторство на данный параграф принадлежит фирме Microsoft, то правила хорошего тона требуют указания от куда была взята эта цитата (ссылка на сайт или печатное издание)
2. Не всегда надо верить рекламной писанине...
to DRON-ANARCHY, Да я полностью согласен с Вами, но для этого надо обладать достаточно солидным багажом опыта и знаний. А Гн.Wolf82, плавает даже в том языке, который (как он считает) ему хорошо известен. И он просил конкретной помощи по (подчеркиваю) ТРИВИАЛЬНЫМ вопросам. А по сему ответ: "...копай здесь, а я пойду, узнаю, где надо..." господинаYandex, вызвал у меня недоумение и приступ здорового веселья.
[Ответ]
Wolf82 12:22 21.09.2006
Сообщение от MadFish:
Как вы господин Yandex, смогли заметить из моих постов (если таки удосужились их прочесть), я отнюдь не гуманитарий (кстати очень жаль, т.к. это сильно обедняет мою личность). Но, даже оставаясь математиком и программистом, я не утратил умения читать, думать и отвечать на поставленный вопрос. А по поводу вашей цитатки:
1 раз уж вы утверждаете, что авторство на данный параграф принадлежит фирме Microsoft, то правила хорошего тона требуют указания от куда была взята эта цитата (ссылка на сайт или печатное издание)
2. Не всегда надо верить рекламной писанине...
to DRON-ANARCHY, Да я полностью согласен с Вами, но для этого надо обладать достаточно солидным багажом опыта и знаний. А Гн.Wolf82, плавает даже в том языке, который (как он считает) ему хорошо известен. И он просил конкретной помощи по (подчеркиваю) ТРИВИАЛЬНЫМ вопросам. А по сему ответ: "...копай здесь, а я пойду, узнаю, где надо..." господинаYandex, вызвал у меня недоумение и приступ здорового веселья.
Вообще-то, г-н MadFish, я не говорил что VB мне хорошо известен, я начал пользоваться этим языком примерно полтора месяца назад...Поэтому я и решил обратиться к знающим людям за помощью...
[Ответ]
Yandex 12:27 21.09.2006
MadFish, лана пофлудим
> я отнюдь не гуманитарий
Эт, я заметил, только после создания поста (пост был на новой странице). Тем не менее странно, что ты сомневаешься в том, что Wolf82 сможет переделать приведенный скрипт под собственные нужны, а именно написать не Excel, а Word, ну и там по мелочи - не писать же ему весь код в самом деле?!
> плавает даже в том языке, который (как он считает) ему хорошо известен
Ну эт ты где углядел?
> И он просил конкретной помощи по (подчеркиваю) ТРИВИАЛЬНЫМ вопросам
Именно поэтому я и указал, чтобы он стучался в аську.
Ссылку дать не могу - это была цитатка из chm файла (а не с MSDN, как обычно гуру пишут, хе-хе), скаченного с сайта MS. К сожалению, фаил назывался страшно, потому я его переименовал более понятно для меня.
Чтобы не быть совсем голословным - заголовок справки Microsoft Windows Script Technologies. Сам фаил справки ищется на сайте MS в соотв. разделе.
[Ответ]
MadFish 12:29 21.09.2006
Wolf82, Тогда тем более, помощь предложенная Вам господином Yandex, на другом языке и рассчитанном на другую объектную модель, и решающая совсем других задачи, нежели те которые фигурировали в Вашем вопросе была бессмысленной, и не могла не вызвать моего веселья. Как я и говорил:"Я валяюсь" [Ответ]
Wolf82 12:33 21.09.2006
и еще я откорректировал программу в соответствии с тем примером, на который Вы, г-н MadFish, дали ссылку, но почему-то она не работает, вот код, разъясните подалуйста, где я ошибся
вот код
Option Explicit
Dim objWordApp As Word.Application
Dim objWordDoc As Word.Document
Private Sub Command1_Click()
Set objWordApp = New Word.Application
Set objWordDoc = _
objWordApp.Documents.Open("C:\R_4_40550.RTF")
objWordApp.Visible = True
objWordDoc.Runing
objWordDoc.Close
Set objWordDoc = Nothing
Set objWordApp = Nothing
End Sub
выдает ошибку в строке objWordDoc.Runing object daesnt support this property or method
Runing -название макроса
[Ответ]
MadFish 12:51 21.09.2006
Сообщение от Yandex: MadFish, переделать приведенный скрипит под собственные нужны, а именно написать не Excel, а Word, ну и там по мелочи - не писать же ему весь код в самом деле?!
Ага... "...здесь читаем, здесь не читаем, здесь я рыбу заворачивал..." (с) кинофильм "Трое в лодке, не считая собаки".
Господи, а кто Вас заставлял вообще что-нибудь писать? Три строчки кода и туда же..."не писать же весь код"...
Сообщение от Yandex:
> плавает даже в том языке, который (как он считает) ему хорошо известен
Ну эт ты где углядел?
Ну например здесь:
Сообщение от Wolf82:
[...]
objWord.Documents.Open (puth)
Set objWord = Nothing
Dim appWord As New Word.Application
Set WordApp = CreateObject("Runing")
appWord.Run
End Sub
Сообщение от Yandex:
...Ссылку дать не могу - это была цитатка из chm файла (а не с MSDN, как обычно гуру пишут, хе-хе), скаченного с сайта MS. ....
Ну да "...сходи туда не знаю куда, принеси то, не знаю что..."
Вы правы в одном! Это все действительно флуд с нулевой информационной ценностью. Мне он не интересен. За сим со всем уважением к Вам господин Yandex я откланяюсь.
[Ответ]
Yandex 13:27 21.09.2006
MadFish, я всегда против флейма, потому не буду грубить, а попросту попрошу - снисходительный том лучше оставьте. Не стоит считать здесь всех глупее себя.
Да, согласен, что модель объектная несколько другая, тем не менее, принцип то один - OLE. Ниже код, правленный.
Сообщение от :
Sub MacrosDoc2()
set objWord = CreateObject("Word.Application")
objWord.Documents.Open ("C:\Doc1.doc")
objWord.Run "Doc1.doc!MacrosDoc1"
objWord.Quit
End Sub
Под решаемую задачу
Сообщение от :
Sub MacrosDoc2()
set objWord = CreateObject("Word.Application")
objWord.Documents.Open ("C:\Doc.txt")
objWord.Run "MacrosDoc2"
objWord.Quit
End Sub
Изменений не так уж и много и по аське они бы все разрулились.
[Ответ]
MadFish 14:03 21.09.2006
Wolf82,
Dim objWordApp As Word.Application
Dim objWordDoc As Word.Document
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Create a new instance of Word
objWordApp = New Word.Application
'Open the document containing the macro
objWordDoc = _
objWordApp.Documents.Open("C:\zzz.DOC")
'Run the macro
objWordApp.Run("m1")
'Close the document and clear the variables
objWordDoc.Close()
objWordDoc = Nothing
objWordApp = Nothing
End Sub
Вы заставили таки меня поставить себе Вижуал Васик [Ответ]
Wolf82 14:11 21.09.2006
спасибо, прога и до этого рабочая бала, я просто не досмотрел, у меня Word висел в процессе, а на экране не отображался, после остановки процесса все заработало
[Ответ]
MadFish 14:20 21.09.2006
Сообщение от Yandex:
MadFish, я всегда против флейма, потому не буду грубить, а попросту попрошу - снисходительный том лучше оставьте. Не стоит считать здесь всех глупее себя.
Ну что Вы, милейший Yandex, у меня и мыслей таких не было. Не могу понять, где в моих постах вы увидели снисходительный тон, а тем паче, разглядели мой снобизм.
Сообщение от Yandex:
Да, согласен, что модель объектная несколько другая, тем не менее, принцип то один - OLE. Ниже код, правленный.
Ну, я бы все-таки назвал это не OLE(слегка устаревший термин Вы не находите), а COM или еще точнее Automation, но это уже не суть.
Сообщение от Yandex:
[...]
Изменений не так уж и много и по аське они бы все разрулились.
О чем и речь. Я и говорю, что данная задача не является хоть сколь-нибудь значимой проблемой для более или менее грамотного специалиста. Меня лишь удивило что Вы не написали этих заветных трех строк сразу, а предпочли пробираться к ним через Script Hosting и Excell, что согласитесь несколько удивляет. И не более того.
[Ответ]
Yandex 14:34 21.09.2006
MadFish, ладно проехали.
> а предпочли пробираться к ним через Script Hosting и Excell
Никогда не писал на VB, просто немного развлекался раньше на WSH (в Excel в частности). А OLE мне почему то больше нравиться [Ответ]