powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel. Потеря ActiveSheet
42 сообщений из 42, показаны все 2 страниц
Excel. Потеря ActiveSheet
    #36887135
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброго времени суток, уважаемые

Подскажите пожалуйста существуют ли приемы условно говоря всех объектов Excel и заполнения только конкретного экземпляра?

Ситуация следущая: Имеется приложение, которое по кнопке выводит пользователю отчет с форматированием не только шапки, но и всего объема данных (условно говоря секционирование строк + форматирование по центру в первом столбце каждой секции)
в зависимости от объема данных отчет может заполняться до 50 секунд

В это время пользователь хочет работать в другом (своем) экземпляре Excel, и как только он позиционирует курсор на своем экселевом файле, то теряется ссылка на ActiveSheet, ну и возникает ошибка "Application-defined or object-defined error"

выгружать данные через буфер - не вариант, потому как не понимаю как можно будет задать указанное форматирование.

собственно, может ли кто-нибудь помочь советом по вопросу блокировки всех экземпляров Excel или поделиться опытом в случае удачного решения описанной проблемы.


_________________________________
Не нужно бежать от снайпера, только умрешь уставшим(с)
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887138
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо так ваше ПО написано, надо было делать не через ActiveSheet, а через именнованный
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887147
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто не надо работать с ActiveSheet - работать со ссылкой на конкретный лист
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887148
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвидимо так ваше ПО написано, надо было делать не через ActiveSheet, а через именнованный
Ну можно просто в начале макроса Set MySheet=ActiveSheet и дальше работать с MySheet
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887153
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneвидимо так ваше ПО написано, надо было делать не через ActiveSheet, а через именнованный
Ну можно просто в начале макроса Set MySheet=ActiveSheet и дальше работать с MySheet

ну так и я об этом же или просто сделать уникальное имя и к нему обращаться при открытие объекта
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887167
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвидимо так ваше ПО написано, надо было делать не через ActiveSheet, а через именнованный

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
hwnd = FindWindow2("XLMAIN",  0 )
If hwnd =  0  Then
    Set ExcelApp = CreateObject("excel.application")
    ourexcel = True
Else
    Set ExcelApp = GetObject(, "Excel.Application")
    ourexcel = False
End If

ExcelApp.Workbooks.Add
ExcelApp.Visible = True
Set exws = ExcelApp.ActiveWorkbook.ActiveSheet
...
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887171
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я к тому, что вроде как ссылка именнованная ;)
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887173
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плохо это очень, через findwindow - это вообще жесть какая-то. может сразу createobject() попробуете?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887178
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneплохо это очень, через findwindow - это вообще жесть какая-то. может сразу createobject() попробуете?а ты дальше второй строки смотришь?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887181
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KallandorKonst_Oneплохо это очень, через findwindow - это вообще жесть какая-то. может сразу createobject() попробуете?а ты дальше второй строки смотришь?

смотрю, но это извращение, а не код. открывайте сразу нужный вам sheet
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887185
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandorэто я к тому, что вроде как ссылка именнованная ;)
Если дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должно
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887186
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneKallandorKonst_Oneплохо это очень, через findwindow - это вообще жесть какая-то. может сразу createobject() попробуете?а ты дальше второй строки смотришь?

смотрю, но это извращение, а не код. открывайте сразу нужный вам sheetсейчас о чем идет речь?
о макросе?
о приложении?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887191
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKallandorэто я к тому, что вроде как ссылка именнованная ;)
Если дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должнода, дальше работа идет только по exws и проблема возникает =)
парадокс
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887195
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KallandorShocker.ProЕсли дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должнода, дальше работа идет только по exws и проблема возникает =)
парадокс
Тогда приведенных вами данных недостаточно для локализации проблемы.
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887198
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KallandorShocker.ProKallandorэто я к тому, что вроде как ссылка именнованная ;)
Если дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должнода, дальше работа идет только по exws и проблема возникает =)
парадокс

я вообще не понимаю зачем вы окно excel-a пытаетесь искать, из-за этого у вас и проблемы. и объект workbook тоже можно получить при добавлении, а не юзать по ссылке ActiveWorkbook
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887218
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneKallandorShocker.ProKallandorэто я к тому, что вроде как ссылка именнованная ;)
Если дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должнода, дальше работа идет только по exws и проблема возникает =)
парадокс

я вообще не понимаю зачем вы окно excel-a пытаетесь искать, из-за этого у вас и проблемы. и объект workbook тоже можно получить при добавлении, а не юзать по ссылке ActiveWorkbook

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
'файд нужен только для определения принадлежности Excel, если Excel "наш",
' то ExcelApp.Quit и уничтожение ссылок, иначе просто уничтожение ссылок
hwnd = FindWindow2("XLMAIN",  0 )
If hwnd =  0  Then
    Set ExcelApp = CreateObject("excel.application")
    ourexcel = True
Else
    Set ExcelApp = GetObject(, "Excel.Application")
    ourexcel = False
End If

'внимательно смотрим сюда =)
ExcelApp.Workbooks.Add

ExcelApp.Visible = True
Set exws = ExcelApp.ActiveWorkbook.ActiveSheet
...

...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887227
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKallandorShocker.ProЕсли дальнейшая работа идет ТОЛЬКО с exws, то проблем с уводом фокуса пользователем быть не должнода, дальше работа идет только по exws и проблема возникает =)
парадокс
Тогда приведенных вами данных недостаточно для локализации проблемы. то есть вы сомневаетесь в моей способности локализовать проблему?

=)

Ошибка происходит при попытке установки значения в ячейку

Код: plaintext
exws.Range(Chr(i +  65 ) & CStr(excounter)) = FormatNumber(rssubtot.Fields(i).Value,  2 , vbTrue, vbFalse, vbUseDefault)

строка на которой происходит ошибка =)
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887232
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё раз:
создавайте объект экселя сами на основе нужного вам sheet и не будет у вас проблем
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887239
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Kallandor

Привет, меч, который не меч и не меч вовсе :)

Перепиши код таким образом, чтобы исключить любое обращение с общим свойствам типа ActiveSheet, ActiveCell. Для этого
пообявляй переменные нужных типов и инициализируй их при начале работы макроса/программы.
Например так:
Код: plaintext
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.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
Sub RollingData()
'
' Макрос1 Макрос
' Макрос записан 14.01.2009 (user)
'

'
Dim sCurrentFiltRange As String
Dim r As Range
Dim s As Worksheet, sh As Worksheet, shOut As Worksheet, w As Workbook, w1 As Workbook
Dim vPriznak As Variant
Dim vMonth As Variant
Dim vGroup As Variant

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Set w = Application.ActiveWorkbook
Set sh = Worksheets("филиал")
sCurrentFiltRange = sh.AutoFilter.Range.Address

Set w1 = Application.Workbooks.Add
Application.DisplayAlerts = False
w1.PrecisionAsDisplayed = True
w1.Worksheets("Лист1").Delete
w.Worksheets("Результат").Delete
Application.DisplayAlerts = True

Set s = w1.Worksheets.Add
s.Name = "Лист1"
Set s = Nothing

Set s = w.Worksheets.Add
s.Name = "Результат"

' Получаем список уникальных комбинаций из
' признак филиал-Укрнафта или ещё какой-то,
' месяца оплаты, номера платёжного поручения,
' группы, вида и суммы оплаты
Set r = Worksheets("Лист1").Range("a1")
sh.Range("P:U").AdvancedFilter xlFilterCopy, , r, True
Application.DisplayAlerts = False
w1.PrecisionAsDisplayed = False
DoEvents
w1.PrecisionAsDisplayed = True
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row -  1 )).Value2
Application.DisplayAlerts = True

w.Activate
s.Select
Dim iPriz As Long, iMonth As Long, iGr As Long, i As Long, nCurrRow As Long, bFirst As Boolean
nCurrRow =  2 
Dim ar As Areas
For iGr = LBound(vGroup) To UBound(vGroup)
    With sh.Range(sCurrentFiltRange)

        .AutoFilter Field:= 16 , Criteria1:=CStr(vGroup(iGr,  1 )) '"январь"
        .AutoFilter Field:= 17 , Criteria1:=CStr(vGroup(iGr,  2 )) '"филиал"
        .AutoFilter Field:= 18 , Criteria1:=CStr(vGroup(iGr,  3 )) '№ платежки
        .AutoFilter Field:= 19 , Criteria1:=CStr(vGroup(iGr,  4 )) '"группа"
        .AutoFilter Field:= 20 , Criteria1:=CStr(vGroup(iGr,  5 )) '"статья"
        .AutoFilter Field:= 21 , Criteria1:=Replace(Trim(Format(vGroup(iGr,  6 ), "#,##0.00")), ",", ".") 
'w1.Worksheets("Лист1").Cells(iGr + 1, 5) 'Trim(Format(vGroup(iGr, 5), "#,##0.00"))   '"62,76"
        'DoEvents
        For Each r In sh.Range(sCurrentFiltRange).SpecialCells(xlCellTypeVisible).Areas
            i = i + r.Rows.Count ' .SpecialCells(xlCellTypeVisible).Rows.Count
        Next r
        If i >  1  Then
            bFirst = True
            For Each r In sh.Range(sCurrentFiltRange).SpecialCells(xlCellTypeVisible).Areas
                If r.Rows.Count >  1  Or Not bFirst Then
                    r.Rows( 1  + - 1  * CLng(bFirst)).Copy
                    s.Select
                    s.Rows(nCurrRow).Select
                    s.Paste
                    s.Cells(nCurrRow,  21 ).Value = "=" + Replace(CStr(s.Cells(nCurrRow,  21 ).Value), ",", ".") + "*" + 
CStr(i -  1 )
                    s.Cells(nCurrRow,  31 ).Value = CStr(i -  1 )
                    nCurrRow = nCurrRow +  1 
                    Exit For
                Else
                    bFirst = False
                End If
            Next r
        Else
            i = i
        End If
        Debug.Print i -  1 , Round(CDbl(vGroup(iGr,  6 )),  2 ), CStr(vGroup(iGr,  1 )), CStr(vGroup(iGr,  2 )), CStr(vGroup(iGr, 
 3 )), CStr(iGr)
        i =  0 
    End With
Next iGr
' Отключаем автофильтры
sh.ShowAllData
' Закрываем книгу с уникальным списком
sCurrentFiltRange = w1.Name
Set w1 = Nothing
Application.DisplayAlerts = False
Application.Workbooks(sCurrentFiltRange).Close (False)
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Закончили!"
End Sub

В примере на входе книга с листом данных, зачастую повторяющихся по многим столбцам, макрос "вытаскивает" уникальные
комбинации данных по нужным столбцам в новую книгу, и потом "перетряхивает" исходные данные для "ужатия", т.е.
отбрасывает ненужные столбцы, а сумму суммирует. При этом происходят постоянные обращения к разным книгам и никакой
проблемы нет.

Дальше, тебе сказали что глупо искать окно ексела, если можно обойтись несколькими строчками кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Try
 XLApp = Getobject(,'excel.application') && Пытаемся получить инстанс открытого ексела
Catch To oErr
 Try
  XLApp = Createobject('excel.application') && Если попали сюда, значит открытого ексела не оказалось
 Catch To oErr1
  Messagebox("Не возможно обработать данные! Нет установленного Excel!",  0 + 48 + 4096 , "Внимание!",  30000 )
  m_w = .F.
  Exit
 Endtry
Endtry
Это не VB, а FoxPro, но смысл, я думаю понятен

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887240
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneещё раз:
создавайте объект экселя сами на основе нужного вам sheet и не будет у вас проблем звучит также как: ешьте чеснок три раза в день и будет вам счастье
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887244
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KallandorKonst_Oneещё раз:
создавайте объект экселя сами на основе нужного вам sheet и не будет у вас проблем звучит также как: ешьте чеснок три раза в день и будет вам счастье

что вам пытаются объяснить:
метод ExcelApp.Workbooks.Add
возвращает Workbook
использовать ActiveWorkbook НЕ НАДО
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887267
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Kallandor

Привет, меч, который не меч и не меч вовсе :)

Перепиши код таким образом, чтобы исключить любое обращение с общим свойствам типа ActiveSheet, ActiveCell. Для этого
пообявляй переменные нужных типов и инициализируй их при начале работы макроса/программы.

Дальше, тебе сказали что глупо искать окно ексела, если можно обойтись несколькими строчками кода.

привет =)

обращение к ActiveSheet у меня идет всего лишь один раз. Обращения к ActiveCells нет.
данные берутся из RecordSet, и обрабатываются не макросом, а приложением (приложение написано на VB6)
выделенное не поняла к чему относится =)

Shocker.Pro что вам пытаются объяснить:
метод ExcelApp.Workbooks.Add
возвращает Workbook
использовать ActiveWorkbook НЕ НАДО а как мне тогда достучаться до листа?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887271
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandorа как мне тогда достучаться до листа?
Чистого? WorkSheets(1)
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.
Kallandor то есть вы сомневаетесь в моей способности локализовать проблему?
2.
Kallandorто теряется ссылка на ActiveSheet, ну и возникает ошибка
3.
Kallandorда, дальше работа идет только по exws и проблема возникает
Если 3., то причем здесь 2.?

Либо проблема в другом, либо ActiveЧтоТо все же используется.
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887344
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro1.
Kallandor то есть вы сомневаетесь в моей способности локализовать проблему?
2.
Kallandorто теряется ссылка на ActiveSheet, ну и возникает ошибка
3.
Kallandorда, дальше работа идет только по exws и проблема возникает
Если 3., то причем здесь 2.?

Либо проблема в другом, либо ActiveЧтоТо все же используется. Коллега, при всем уважении к вашему искреннему желанию помочь мне в решении проблемы и ради исключения флуда и офтопа давайте сравним словари.
1. Есть ли у вас приложения написанные на VB6, которые долго и упорно что-либо пишут в Excel, с форматированием из приложения (не по макросу)?
2. Если подобные приложения имеются не могли бы вы провести эксперимент: а) открыть новый файл экселя.. что-нибудь туда записать (не закрывать) б) запустить приложение которое бы наполняло Excel в) переключиться на созданный вами файл Excel и что-либо в нем отредактировать?

3. Сообщить о результатах эксперимента. В случае возникновения ошибки (отлов ошибки в приложении должен быть предусмотрен) написать ее текс, или отловить ошибку в RunTime
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887351
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в случае отсутствия ошибки прошу любезно указать как именно вы обращаетесь с Excel в приложении
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887359
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Kallandor
> выделенное не поняла к чему относится =)

Выделенное относится к твоим словам, что теряется ссылка на ActiveSheet, ну и возникает ошибка "Application-defined or
object-defined error".
Код: plaintext
1.
2.
Dim s As Worksheet, ..., w1 As WorkbookSet w1 = Application.Workbooks.Add
Set s = w1.Worksheets.Add
s.Name = "Лист1"
Объявили переменные, добавляем новую книгу и сразу подхватываем её переменной. Далее, добавляем в
созданную книгу лист и подхватываем его переменной соответствующего типа. А дальше просто работаем и не паримся :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887368
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandor,

Коллега, мне очень приятно, что вы не посылаете меня на три буквы

Коллега, у меня есть приложения, работающие с вордом и экселем из VB6 и я с такими проблемами не сталкивался.

Коллега, я искренне желаю вам помочь, но уж тестовый проект, который я мог бы попробовать, вы могли бы сделать и сами, это правила хорошего тона, разве нет?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887372
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Kallandor
> в случае отсутствия ошибки прошу любезно указать как именно вы обращаетесь с Excel в приложении

Ошибка появится сразу, как только начнется редактирование содержимого ячейки. Что-бы этого избежать нужно не искать
открытый ексел, а создавать новый через CreateObject и в нём все делать, после чего сохранять и закрывать сделанный файл
и созданный ексел и открывать сделанный файл для пользователя.
По другому никак.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887406
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKallandor,

Коллега, мне очень приятно, что вы не посылаете меня на три буквы

Коллега, у меня есть приложения, работающие с вордом и экселем из VB6 и я с такими проблемами не сталкивался.

Коллега, я искренне желаю вам помочь, но уж тестовый проект, который я мог бы попробовать, вы могли бы сделать и сами, это правила хорошего тона, разве нет? коллега, а проделать эксперимент вам религия не позволяет ?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887423
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Kallandor
> в случае отсутствия ошибки прошу любезно указать как именно вы обращаетесь с Excel в приложении

Ошибка появится сразу, как только начнется редактирование содержимого ячейки. Что-бы этого избежать нужно не искать
открытый ексел, а создавать новый через CreateObject и в нём все делать, после чего сохранять и закрывать сделанный файл
и созданный ексел и открывать сделанный файл для пользователя.
По другому никак.

провела эксперимент с созданием нового экземпляра эксель... так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim ExcelApp As Object, exws As Object
Set ExcelApp = CreateObject("excel.application")
ourexcel = True
ExcelApp.Visible = True

Set exws = ExcelApp.Workbooks.Add


и начали возникать ошибки при обращении к exws, например тут
Код: plaintext
exws.PageSetup.LeftHeader = "Report:  My1" & Chr( 10 ) & "" & Chr( 10 ) & "Type:  2"
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887490
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Kallandor

А зачем показываешь ексел сразу, а не после приготовления всего, что нужно?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887501
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Kallandor

А зачем показываешь ексел сразу, а не после приготовления всего, что нужно?

нужно по условию задачи
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887740
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уважаемые, больше идей нет?
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887758
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandorуважаемые, больше идей нет?
Если до вечера в топике-таки окажется тестовый проект - я его вечерком помучаю, ща некогда...
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887768
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36887835
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One тут глянь exws.PageSetup.LeftHeader тут не причом =)
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36888419
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас в коде ссылка не на лист, а книгу: Set exws = ExcelApp.Workbooks.Add
А у объекта книги нет PageSetup, поэтому и ошибка
Правильно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
  Dim ExcelApp As Object, Wb As Object, Ws As Object
  Set ExcelApp = CreateObject("Excel.Application")
  Set Wb = ExcelApp.Workbooks.Add
  Set Ws = Wb.Sheets( 1 )
  Ws.PageSetup.LeftHeader = "Report:  My1" & Chr( 10 ) & "" & Chr( 10 ) & "Type:  2"
  ExcelApp.Visible = True  ' Это нужно делать в конце обработки или вообще не делать
  Set Ws = Nothing
  Set Wb = Nothing
End Sub
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36888897
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIУ Вас в коде ссылка не на лист, а книгу: Set exws = ExcelApp.Workbooks.Add
А у объекта книги нет PageSetup, поэтому и ошибка
Правильно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Test()
  Dim ExcelApp As Object, Wb As Object, Ws As Object
  Set ExcelApp = CreateObject("Excel.Application")
  Set Wb = ExcelApp.Workbooks.Add
  Set Ws = Wb.Sheets( 1 )
  Ws.PageSetup.LeftHeader = "Report:  My1" & Chr( 10 ) & "" & Chr( 10 ) & "Type:  2"
  ExcelApp.Visible = True  ' Это нужно делать в конце обработки или вообще не делать
  Set Ws = Nothing
  Set Wb = Nothing
End Sub

результат один и тот же =(
равен описанному в стартовом посте
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36888921
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень странно, но у меня этот пример отрабатывает без ошибок и добавляет новый вид заголовка
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36889697
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Konst_One
> очень странно, но у меня этот пример отрабатывает без ошибок и добавляет новый вид заголовка


Наверное потому, что у тебя установлен принтер :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Потеря ActiveSheet
    #36889865
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandorрезультат один и тот же =(
равен описанному в стартовом посте
Игорь прав, установите себе по умолчанию какой-нибудь (можно виртуальный принтер) и проверьте еще раз.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel. Потеря ActiveSheet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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