Re: VBA
Здравствуйте!
Как заставить отчет выполнить процедуру:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Спасибо.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте!
Как заставить отчет выполнить процедуру:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Спасибо.
Это обработчик на закрытие WorkBook
а отчет WorkBook как он может выполнится?
Андрей Беньков писал(а):
Это обработчик на закрытие WorkBook
а отчет WorkBook как он может выполнится?
Я в курсе, что процедура работает на закрытие книги.
Но мне нужно выполнить при закрытии отчета, следующее:
With ActiveSheet
If not TypeName(.Cells(1, 1).Comment) Like "Comment" Then
Save
Exit Sub
End If
End With
If MsgBox("Вы хотите закрыть рабочую книгу " & Me.Path & "\" & Me.Name & "?", vbYesNo) = vbYes Then
On Error Resume Next
SaveAs Me.Path & "\" & Me.Name
If InStr(1, Me.Name, "_") > 0 Then
Exit Sub
End If
If MsgBox("Вы хотите сохранить рабочую книгу " & Me.Path & "\" & Me.Name & " в ТCS?", vbYesNo) = vbYes Then
If TCS Is Nothing Then
Set TCS = CreateObject("CSDN.TCS")
End If
Set TCSApp = TCS.LoginCurrent
If Err.Number <> 0 Then
If (Err.Number = -2147418113) Or (Mid(Err.Description, "cоединение")) Then
On Error Resume Next
Set TCSApp = TCS.Login
If Err.Number <> 0 Then
MsgBox ("Ошибка при соединении с TCS!")
Exit Sub
End If
End If
End If
Set Archive = TCSApp.Archive
If Archive.RunModuleForSelect("Выберите документ", False) > 0 Then
If Not Archive.AllowInsert Then
MsgBox("У Вас нет доступа к документу!")
Exit Sub
End If
Set Files = Archive.Properties("FILES").AsIDispatch
If Not Files.Locate("NAME", Me.Name, 0) Then
Call Files.AddFile(Me.Path & "\" & Me.Name, -1)
Else
If MsgBox("Файл существует, заменить " & Me.Name & "?" + Chr$(13) + Chr$(10) _
+ "Если нет, то создать новую версию документа.", vbYesNo) = vbYes Then
'Call Files.DeleteRecord(False)
Call Files.AddFileEx(Me.Path & "\" & Me.Name, 1, -1)
Else
Set VERSIONS = Archive.Properties("VERSIONS").AsIDispatch
If Not VERSIONS Is Nothing Then
'VER_ACT
Call Archive.CreateDocVer(2 + 8 + 16 + 32 + 128 + 256 + 4096, VERSIONS.Properties("VER_NAME").AsString & "(API" & CStr(VERSIONS.Properties("VER_NUMBER").AsInteger + 1) & ")" _
, VERSIONS.Properties("VER_ID").DisplayText, "")
Set Files = Archive.Properties("FILES").AsIDispatch
Call Files.AddFileEx(Me.Path & "\" & Me.Name, 1, -1)
End If
Set VERSIONS = Nothing
End If
End If
With ActiveSheet
If TypeName(.Cells(1, 1).Comment) Like "Comment" Then
.Cells(1, 1).Comment.Delete
Save
End If
End With
Set Files = Nothing
Set Archive = Nothing
End If
End If
Application.Quit
Else
Cancel = True
End If
Идея очень интересна :idea:
Теоретически всю эту текстовку надо отдельной процедурой засунуть в лист книги сформированной отчётом. Есть объект Application.VBE может его поковыряете? или кто из форумчан подскажет конкретнее чего ещё посмотреть. Код процедуры через Implement наверное надо выполнять.
Ввел
Attribute VB_Name = "CloseSaveArhiv"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
и
Sub Implement()
Application.MacroOptions Macro:="CloseSaveArhiv", Description:="", _
ShortcutKey:="c"
End Sub
Создается модул CloseSaveArhiv а в ней процедура Private Sub Workbook_BeforeClose(Cancel As Boolean), a должен в ЭтаКнига. ??????????????
Что не так??????????
Создается модул CloseSaveArhiv а в ней процедура Private Sub Workbook_BeforeClose(Cancel As Boolean), a должен в ЭтаКнига. ??????????????
ага, надо прямо в книге
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться