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

?
...
Рейтинг: 0 / 0
Архивирование
    #32498105
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно спросит по другому:
как связать два приложения: Аксесс и Винрар (например)?
...
Рейтинг: 0 / 0
Архивирование
    #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
Архивирование
    #32498140
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо попробую.
...
Рейтинг: 0 / 0
Архивирование
    #32498294
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Винрар запускается, спасибо
а можно ли как-нибуть указать имя файла для сжатия в коде?
...
Рейтинг: 0 / 0
Архивирование
    #32498306
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А pathname прописать вместе с ключами?
...
Рейтинг: 0 / 0
Архивирование
    #32498322
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shell "C:\Program Files\WinRAR\winrar.exe", vbNormalFocus
это куда? плиз
...
Рейтинг: 0 / 0
Архивирование
    #32498331
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shell "C:\Program Files\WinRAR\winrar.exe <сюда>", vbNormalFocus
...
Рейтинг: 0 / 0
Архивирование
    #32498334
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключи winrar не помню, посмотрите их через командную строку
...
Рейтинг: 0 / 0
Архивирование
    #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
Архивирование
    #32498353
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
команда shell запускает архиватор и открывает архив, но не создает его!
...
Рейтинг: 0 / 0
Архивирование
    #32498357
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
команда shell запускает архиватор и открывает архив, но не создает его!

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

Читай очень внимательно C:\Program Files\WinRAR\WinRAR.hlp (вкладка предметный указатель, поиск по "ключи")
когда прочтешь про ключи винрара - раскажи всем какое это отношение имеет к форуму по Акесу :)
...
Рейтинг: 0 / 0
Архивирование
    #32498364
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Shuhard
а можно поподробнее пожайлуста.
Для Paparome
извини, но я ни чего про ключи не знаю, я писал без ключей.
...
Рейтинг: 0 / 0
Архивирование
    #32498373
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shell "C:\Program Files\WinRAR\winrar.exe a [путь]\1.rar [путь]\1.txt", vbNormalFocus
...
Рейтинг: 0 / 0
Архивирование
    #32498376
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ключи я нашел
последняя просьба: дайте пример с ключами, что бы я знал как их использовать.
...
Рейтинг: 0 / 0
Архивирование
    #32498388
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось
СПАСИБО!
...
Рейтинг: 0 / 0
Архивирование
    #32498424
Фотография 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
Архивирование
    #32499076
Фотография 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
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Архивирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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