Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как программно отключить всплывающие окна в MS Excel? / 11 сообщений из 11, страница 1 из 1
22.05.2012, 09:29
    #37805138
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Привет.
Я пишу прогу в VBA в MS Excel в ней у меня копируется в буфер обмена содержимое одного листа , затем создается новый лист и в него вставляется содержимое из буфера обмена, затем я после определенной работы с книгой пытаюсь ее закрыть, при закрытии книги выскакивает диалоговое сообщение "В буфере обмена находится большой объем данных. Сохранить эти данные для последующей вставки в другую программу?" с кнопками ДА, НЕТ и ОТМЕНА.
Как можно отключить это всплывающее окно. Чтобы автоматически проставлялось НЕТ.
Пробовал в программу перед закрытие книги вставить оператор xlApp.DisplayAlerts = False, чет не работает сообщение все равно выходит.
Вот код моей проги:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
Public Sub ResultFMUE12(y As String)
    Dim strQuery As String, vt As String, m As String
    Dim rs As DAO.Recordset, rs1 As DAO.Recordset, rs2 As DAO.Recordset
    Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    
    strQuery = "select DOR, DOR_P from FMUE12 group by DOR, DOR_P"
    Set db = DBEngine.OpenDatabase(GetPath() & "\base.mdb")
    Set rs = db.OpenRecordset(strQuery)
    Do While Not rs.EOF
        m = db.OpenRecordset("select top 1 MM from CO25A where DOR=" & rs!dor & " and DOR_P=" & rs!dor_p)(0)    
        For i% = 1 To 2
            vt = db.OpenRecordset("select VT from VT where N_VT=" & CStr(i%))(0)      
            vtf = db.OpenRecordset("select VT_FN from VT where N_VT=" & CStr(i%))(0)        
            Set rs1 = db.OpenRecordset("Select SRR from FMUE12" & _
                                       " where DOR=" & rs!dor & " and DOR_P=" & rs!dor_p & " and VT='" & vt & "'" & _
                                       " group by SRR")
            Do While Not rs1.EOF
                Set xlBook = GetObject(CopyFile(rs!dor, rs!dor_p, m, y, i%, rs1!srr))
                Set rs2 = db.OpenRecordset("Select * from FMUE12" & _
                                           " where DOR=" & rs!dor & " and DOR_P=" & rs!dor_p & " and VT='" & vt & "' and SRR='" & rs1!srr & "'" & _
                                           " order by PU")
                s = 4         ' позиция стартовой строки.
                h = CInt(m)   ' позиция стартового столбца.
                Do While Not rs2.EOF
                    If listExist(rs2!pu, xlBook) = False Then
                        Set xlSheet = xlBook.Sheets.Add(, xlBook.Sheets(xlBook.Sheets.Count))
                        xlSheet.Name = rs2!pu
                        xlBook.Sheets("shablon").Visible = xlSheetVisible
                        Set xlSheet = xlBook.Sheets("shablon")
                        xlSheet.Cells.Copy
                        Set xlSheet = xlBook.Sheets(CStr(rs2!pu))
                        xlSheet.Paste
                        xlBook.Sheets("Shablon").Visible = xlVeryHidden
                    End If
                    Set xlSheet = xlBook.Sheets(CStr(rs2!pu))
                    xlSheet.Cells(2, 2) = rs1!srr
                    xlSheet.Cells(2, 13) = y & "г."
                    xlSheet.Cells(3, 2) = rs2!pu
                    For r% = 1 To 60
                        If r% = 29 Then s = s + 3
                        xlSheet.Cells(r% + s, h) = IIf(rs2.Fields(CStr(r%)) = 0, "", rs2.Fields(CStr(r%)))
                    Next r%
                    rs2.MoveNext
                Loop
                xlBook.Windows(1).Visible = True
                xlApp.DisplayAlerts = False      ' отключаем всплывающие окна в MS Excel.
                xlBook.Close True
                xlApp.DisplayAlerts = True  '  включаем перед выходом всплывающие окна в MS Excel.
                rs2.Close: Set rs2 = Nothing
                rs1.MoveNext
            Loop
            rs1.Close: Set rs1 = Nothing
        Next i%
    Loop
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
End Sub
...
Рейтинг: 0 / 0
22.05.2012, 09:43
    #37805163
QValD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Azeke,
а очистить буфер перед закрытием?
...
Рейтинг: 0 / 0
22.05.2012, 10:00
    #37805184
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Не подскажете как можно очистить буфер?
...
Рейтинг: 0 / 0
22.05.2012, 10:03
    #37805190
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Azeke,

Код: vbnet
1.
Application.CutCopyMode = False
...
Рейтинг: 0 / 0
22.05.2012, 10:06
    #37805197
QValD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Azeke,
если нет ClipBoardEx, то
http://excelvba.ru/code/clipboard
...
Рейтинг: 0 / 0
22.05.2012, 10:35
    #37805246
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Поставил после вставки Application.CutCopyMode = False всеравно сообщение выходит.

QValD спасибо получилось через функцию ClearClipboard.
Теперь сообщения нет.
...
Рейтинг: 0 / 0
22.05.2012, 11:13
    #37805335
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
AzekeПоставил после вставки Application.CutCopyMode = False всеравно сообщение выходит.
Я не на тот вопрос ответил :)
...
Рейтинг: 0 / 0
22.05.2012, 15:28
    #37806127
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Вместо:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
...
                        xlBook.Sheets("shablon").Visible = xlSheetVisible
                        Set xlSheet = xlBook.Sheets("shablon")
                        xlSheet.Cells.Copy
                        Set xlSheet = xlBook.Sheets(CStr(rs2!pu))
                        xlSheet.Paste
                        xlBook.Sheets("Shablon").Visible = xlVeryHidden
...

используйте
Код: vbnet
1.
xlBook.Sheets("shablon").Cells.Copy xlBook.Sheets(CStr(rs2!pu)).Cells(1,1)
...
Рейтинг: 0 / 0
22.05.2012, 15:44
    #37806149
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
AzekeКак можно отключить это всплывающее окноapplication.displayalerts = false
...
Рейтинг: 0 / 0
22.05.2012, 15:49
    #37806159
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
PlanBapplication.displayalerts = false

AzekeПробовал вставить оператор xlApp.DisplayAlerts = False, чет не работает сообщение все равно выходит.
...
Рейтинг: 0 / 0
22.05.2012, 17:31
    #37806378
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить всплывающие окна в MS Excel?
Serge 007,
>>Пробовал в программу перед закрытие книги вставить оператор xlApp.DisplayAlerts = False
ставьте сразу!))
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как программно отключить всплывающие окна в MS Excel? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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