Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Архивирование / 20 сообщений из 20, страница 1 из 1
27.04.2004, 10:57
    #32498093
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Привет всем
Ситуация такая: Аксесс формирует отчеты (делает их экселевскими и хранит в отдельной папке), а они большие, более 1 мига, и нужно их отправить по почте. Проблема в том, как можно сделать, чтобы аксесс не только создавал их экселевскими (что сдалано в VBA), но и сжимал их в rar или zip. Это все нужно сделать в коде, поскольку оператор не должен этим заниматься, а только нажимать на кнопку.
Спасибо всем.
...
Рейтинг: 0 / 0
27.04.2004, 10:59
    #32498099
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Shell

?
...
Рейтинг: 0 / 0
27.04.2004, 11:01
    #32498105
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
можно спросит по другому:
как связать два приложения: Аксесс и Винрар (например)?
...
Рейтинг: 0 / 0
27.04.2004, 11:08
    #32498128
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Запустить WinRar с помощью команды Shell

Что не понятно?

ХелпЗапускает исполняемую программу и при успешном запуске программы возвращает значение типа Variant (Double), представляющее идентификатор программы; в противном возвращается нуль.

Синтаксис

Shell(pathname[,windowstyle])

Синтаксис функции Shell содержит следующие именованные аргументы:

Элемент Описание
pathname Обязательный. Значение типа Variant (String). Имя выполняемой программы и любые требуемые аргументы или ключи командной строки; допускает включение каталога или папки и диска.
windowstyle Необязательный. Значение типа Variant (Integer), соответствующее типу окна, в котором выполняется программа. Если аргумент windowstyle опущен, программа запускается в свернутом окне и получает фокус.
Именованный аргумент windowstyle имеет следующие значения:

Константа Значение Описание
vbHide 0 Окно скрыто, и фокус передается скрытому окну.
vbNormalFocus 1 Окно имеет фокус и восстанавливает свои стандартные размер и положение.
vbMinimizedFocus 2 Окно отображается в виде значка с фокусом.
vbMaximizedFocus 3 Окно развертывается на полный экран с фокусом.
vbNormalNoFocus 4 Восстанавливаются предыдущие размер и положение окна. Активным остается текущее окно.
vbMinimizedNoFocus 6 Окно отображается в виде значка. Активным остается текущее окно.
Дополнительные сведения

При успешном запуске функцией Shell указанного файла она возвращает идентификатор (ID) запущенной программы. Идентификатор задачи ID является уникальным номером, указывающим на выполняемую программу. Если функция Shell не может запустить указанную программу, возникает ошибка. При использовании функции MacID с функцией Shell в Microsoft Windows возникает ошибка.

Примечание. Функция Shell запускает другие программы в асинхронном режиме. Это означает, что для продолжения выполнения инструкций, следующих за Shell, не требуется завершения программы, запущенной с помощью функции Shell.
...
Рейтинг: 0 / 0
27.04.2004, 11:11
    #32498140
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Спасибо попробую.
...
Рейтинг: 0 / 0
27.04.2004, 11:52
    #32498294
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Винрар запускается, спасибо
а можно ли как-нибуть указать имя файла для сжатия в коде?
...
Рейтинг: 0 / 0
27.04.2004, 11:57
    #32498306
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
А pathname прописать вместе с ключами?
...
Рейтинг: 0 / 0
27.04.2004, 12:03
    #32498322
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Shell "C:\Program Files\WinRAR\winrar.exe", vbNormalFocus
это куда? плиз
...
Рейтинг: 0 / 0
27.04.2004, 12:05
    #32498331
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Shell "C:\Program Files\WinRAR\winrar.exe <сюда>", vbNormalFocus
...
Рейтинг: 0 / 0
27.04.2004, 12:05
    #32498334
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Ключи winrar не помню, посмотрите их через командную строку
...
Рейтинг: 0 / 0
27.04.2004, 12:11
    #32498348
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Добавляет в архив указанные файлы и папки. Эта команда является эквивалентом командной строки команды Добавить.
Замечание: так как модификация многотомных архивов невозможна, этой командой нельзя добавлять файлы в архивные тома, с ее помощью можно их только создавать.
Примеры:

а) Добавить все файлы *.hlp из текущей папки в архив help.rar:

WinRAR a help *.hlp

б) Заархивировать все файлы из текущей и вложенных папок в самораспаковывающийся непрерывный архив, разделённый на тома save.part1.exe, save.part2.rar, save.part3.rar, … размером по 362000 байт, и добавить к каждому тому информацию для восстановления:

WinRAR a –r –v362 –s –sfx –rr save

Так как имена обрабатываемых файлов не указаны, подразумеваются все файлы (*.*).
в) Если в качестве аргумента указано имя папки, то в архив будет добавлено все содержимое указанной папки (и вложенных папок, если указан ключ – r). Следующая команда добавит все файлы из папки Bitmaps в RAR-архив Pictures:

WinRAR a –r Pictures.rar Bitmaps

Конечно, можно использовать и обычный формат и ввести Bitmaps\*.*, а не Bitmaps.
...
Рейтинг: 0 / 0
27.04.2004, 12:12
    #32498353
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
команда shell запускает архиватор и открывает архив, но не создает его!
...
Рейтинг: 0 / 0
27.04.2004, 12:14
    #32498357
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
команда shell запускает архиватор и открывает архив, но не создает его!

Значит ключи не правильно написал
...
Рейтинг: 0 / 0
27.04.2004, 12:15
    #32498359
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
2raur

Читай очень внимательно C:\Program Files\WinRAR\WinRAR.hlp (вкладка предметный указатель, поиск по "ключи")
когда прочтешь про ключи винрара - раскажи всем какое это отношение имеет к форуму по Акесу :)
...
Рейтинг: 0 / 0
27.04.2004, 12:17
    #32498364
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Для Shuhard
а можно поподробнее пожайлуста.
Для Paparome
извини, но я ни чего про ключи не знаю, я писал без ключей.
...
Рейтинг: 0 / 0
27.04.2004, 12:19
    #32498373
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Shell "C:\Program Files\WinRAR\winrar.exe a [путь]\1.rar [путь]\1.txt", vbNormalFocus
...
Рейтинг: 0 / 0
27.04.2004, 12:19
    #32498376
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
ключи я нашел
последняя просьба: дайте пример с ключами, что бы я знал как их использовать.
...
Рейтинг: 0 / 0
27.04.2004, 12:24
    #32498388
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Получилось
СПАСИБО!
...
Рейтинг: 0 / 0
27.04.2004, 12:37
    #32498424
Vw
Vw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
как делаю я
конструкция работает уже 2 + года

модуль: 1 ф-я запускает приложение и ждет
я её использую вторую см.ниже- она позволяет обновлять
приложение DoEvents чтоб не висло

Option Compare Database
Option Explicit

Public Const SW_HIDE = 0
Public Const SW_SHOWNORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_MINIMIZE = 6
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_RESTORE = 9
Public Const SW_SHOWDEFAULT = 10
Const PROCESS_QUERY_INFORMATION = &H400
Const SYNCHRONIZE = &H100000
Const INFINITE = &HFFFFFFFF

Const STILL_ACTIVE = &H103&

Const glrcErrFileNotFound = 53

Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long

Public Function ahtRunApp(strCommand As String, intMode As Integer)

' Run an application, returning immediately to
' the caller. Just presented as a parallel for
' ahtRunAppWait

Dim hInstance As Long
On Error GoTo ahtRunApp_Err
hInstance = Shell(strCommand, intMode)

ahtRunApp_Exit:
Exit Function

ahtRunApp_Err:
Select Case err.Number
Case glrcErrFileNotFound
MsgBox "не найден : '" & strCommand & "'"
Case Else
MsgBox err.Description
End Select
Resume ahtRunApp_Exit
End Function

Public Function ahtRunAppWait(strCommand As String, intMode As Integer) As Integer
' Run an application, waiting for its completion
' before returning to the caller.

Dim hInstance As Long
Dim hProcess As Long
Dim lngRetval As Long
Dim lngExitCode As Long
'Dim lngEnter As Long

On Error GoTo ahtRunAppWait_Err
' Start up the application.
hInstance = Shell(strCommand, intMode)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or SYNCHRONIZE, _
True, hInstance)
Do
DoEvents ' обновл форmы

' Attempt to retrieve the exit code, which will
' not exist until the application has quit.
lngRetval = GetExitCodeProcess(hProcess, lngExitCode)



'If IsLoaded("frpProgressMeter") Then 'если прог метр загружн
'lngEnter = lngEnter + 0.01
'If lngMaxParametr <= lngEnter Then lngEnter = 1
'subRefreshProgressMeter (Fix(lngEnter))
'End If

Loop Until lngExitCode <> STILL_ACTIVE


ahtRunAppWait_Exit:
Exit Function

ahtRunAppWait_Err:
Select Case err.Number
Case glrcErrFileNotFound
MsgBox "Не найдено '" & strCommand & "'"
Case Else
ahtRunAppWait = err.Number

End Select
Resume ahtRunAppWait_Exit
End Function

'сам вызов :
dim s as string
s="\путь к winrarу\" & " a -ep -m5 -o+ -vp -vd -y " & "путь к файлу " & "путь куда архив-ровать" ' внимательно смотри на пробелы

ahtRunAppWait(s, SW_SHOWNORMAL)

таким же образом можно подчинить TheBat

отправка почты
Call ahtRunApp("C:\Progra~1\TheBat~1\thebat.exe /NOLOGO /MAIlU="твой ящик";F="outbox\Твоя папка в нём";send /exit, SW_HIDE)[/quot][/quot]только:
1.theBat - должен быть закрыт (ето тоже можно проверять прграмно)
2.В твоем поч. ящике должна быть создана папка с шаблоном нового
письма в котором указывается тема, адрес и прикрепляемые файлы.



В общем очень кратко получилось
но идея вроде бы ясна.
Удачи!
...
Рейтинг: 0 / 0
27.04.2004, 16:15
    #32499076
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архивирование
Чуть попроще с теми же функциями:

Dim wshShell, fso
Set wshShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
wshShell.Run """c:\program files\winrar.exe"" a c:\autoexec.bat", , True
'Последний параметр - ожидать окончания рабты
Set wshShell = Nothing
Set fso = Nothing
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Архивирование / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]