Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/сохранить и закрыть файл в бэкграунде - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сохранить и закрыть файл в бэкграунде (Макросы/Sub)
сохранить и закрыть файл в бэкграунде
Tunka-s Дата: Четверг, 11.01.2018, 18:19 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Опять я тут. У меня есть простенький код собранный с миру по нитке и он вроде даже почти работает, но иногда файл, который открывается "незаметно глазу", почему-то не закрываетыса как должен, а остается висеть в бакграунд процессах. В принципе Ексел даже выдает диалоговое окно - "вы точно хотите сохранить файл?" , но это диалоговое окно тоже невидимое глазу и проявляется только когда выключаешь комп! Эта проблема не возникает вроде бы когда я запускаю Макрос вручную из окна разработчика, но как только я привязываю макрос к кнопке на панеле быстрого доступа, ни одно окно не закрывается. Подскажите пожалуйста, как можно принудительно сохранить и закрыть файл в бэкграунде?

[vba]
Код

Sub Transfer_Data()

    Dim BookFrom, BookTo As Worksheet
    
    'Set BookFrom = ThisWorkbook.Worksheets("Sharepoint")
    Application.ScreenUpdating = False
    
    
    'Sub OpenAndManipulate()
    Dim xl0 As New Excel.Application
    Dim xlwb As New Excel.Workbook
    Dim ws As Worksheet
    Dim b As Integer
    
    
    Set xlwb = xl0.Workbooks.Open("https://terumoemea.sharepoint.com/sites/teamrooms/masterdatacreation/Info%20files/RA_additional_Data_consolidation.xlsx")
       
    
    Set ws = xlwb.Worksheets("Overview NHS materials")
       

Dim PkgPc, PkgBox, PkgCar, CatCode, GTIN, BrName, FunN, Descr, LgMFG, MedDevCl, SpPart, NHS, GMDN, UNSPSC, LabLtx, NoLtx, Batch, PkgDate, SerNLoc, DEHP, Reuse, MRI, StrlMnf, StrlCus, ImplM, ClSzT1, ClSzV1, ClSzUom1, ClSzT2, ClSzV2, ClSzUom2, ClSzT3, ClSzV3, ClSzUom3 As Range

Dim shvid As Worksheet
WSh = Array("QS-702C HAWA OCP-Trading Goods", "QS-702G FERT-Fin. Goods Belgium", "QS-702E ROH - Raw Materials", "QS-702F HALB - Semi fin. goods", "QS-702G FERT - Fin. Goods UK")
On Error Resume Next
For i = 0 To UBound(WSh)
    If Sheets(WSh(i)).Visible = -1 Then
        Set shvid = Sheets(WSh(i))
        Exit For
    End If
Next i
On Error GoTo 0
With shvid
    
On Error Resume Next

    b = ws.Cells(Rows.Count, 1).End(xlUp).Row
     
   xl0.Worksheets(1).Cells(b + 1, 1) = .Cells(6, 10)
   
Set CatCode = .Range("A1:IV65536").Find("Product code, item reference for customer (code on label = Z1)", , xlValues)
Set GTIN = .Range("A1:IV65536").Find("GS1-EAN Code (= EAN code with 0) only last 13 char to enter", , xlValues)

xl0.Worksheets(1).Cells(b + 1, 2) = .Cells(CatCode.Row, CatCode.Column + 1)
xl0.Worksheets(1).Cells(b + 1, 3) = .Cells(GTIN.Row, GTIN.Column + 1)
   
     
End With
   
    xlwb.Save
    xlwb.Close
    Set xl0 = Nothing
    Set xlwb = Nothing
End Sub
[/vba]
 
Ответить
СообщениеЗдравствуйте. Опять я тут. У меня есть простенький код собранный с миру по нитке и он вроде даже почти работает, но иногда файл, который открывается "незаметно глазу", почему-то не закрываетыса как должен, а остается висеть в бакграунд процессах. В принципе Ексел даже выдает диалоговое окно - "вы точно хотите сохранить файл?" , но это диалоговое окно тоже невидимое глазу и проявляется только когда выключаешь комп! Эта проблема не возникает вроде бы когда я запускаю Макрос вручную из окна разработчика, но как только я привязываю макрос к кнопке на панеле быстрого доступа, ни одно окно не закрывается. Подскажите пожалуйста, как можно принудительно сохранить и закрыть файл в бэкграунде?

[vba]
Код

Sub Transfer_Data()

    Dim BookFrom, BookTo As Worksheet
    
    'Set BookFrom = ThisWorkbook.Worksheets("Sharepoint")
    Application.ScreenUpdating = False
    
    
    'Sub OpenAndManipulate()
    Dim xl0 As New Excel.Application
    Dim xlwb As New Excel.Workbook
    Dim ws As Worksheet
    Dim b As Integer
    
    
    Set xlwb = xl0.Workbooks.Open("https://terumoemea.sharepoint.com/sites/teamrooms/masterdatacreation/Info%20files/RA_additional_Data_consolidation.xlsx")
       
    
    Set ws = xlwb.Worksheets("Overview NHS materials")
       

Dim PkgPc, PkgBox, PkgCar, CatCode, GTIN, BrName, FunN, Descr, LgMFG, MedDevCl, SpPart, NHS, GMDN, UNSPSC, LabLtx, NoLtx, Batch, PkgDate, SerNLoc, DEHP, Reuse, MRI, StrlMnf, StrlCus, ImplM, ClSzT1, ClSzV1, ClSzUom1, ClSzT2, ClSzV2, ClSzUom2, ClSzT3, ClSzV3, ClSzUom3 As Range

Dim shvid As Worksheet
WSh = Array("QS-702C HAWA OCP-Trading Goods", "QS-702G FERT-Fin. Goods Belgium", "QS-702E ROH - Raw Materials", "QS-702F HALB - Semi fin. goods", "QS-702G FERT - Fin. Goods UK")
On Error Resume Next
For i = 0 To UBound(WSh)
    If Sheets(WSh(i)).Visible = -1 Then
        Set shvid = Sheets(WSh(i))
        Exit For
    End If
Next i
On Error GoTo 0
With shvid
    
On Error Resume Next

    b = ws.Cells(Rows.Count, 1).End(xlUp).Row
     
   xl0.Worksheets(1).Cells(b + 1, 1) = .Cells(6, 10)
   
Set CatCode = .Range("A1:IV65536").Find("Product code, item reference for customer (code on label = Z1)", , xlValues)
Set GTIN = .Range("A1:IV65536").Find("GS1-EAN Code (= EAN code with 0) only last 13 char to enter", , xlValues)

xl0.Worksheets(1).Cells(b + 1, 2) = .Cells(CatCode.Row, CatCode.Column + 1)
xl0.Worksheets(1).Cells(b + 1, 3) = .Cells(GTIN.Row, GTIN.Column + 1)
   
     
End With
   
    xlwb.Save
    xlwb.Close
    Set xl0 = Nothing
    Set xlwb = Nothing
End Sub
[/vba]

Автор - Tunka-s
Дата добавления - 11.01.2018 в 18:19
Karataev Дата: Четверг, 11.01.2018, 22:27 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

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





Сообщение отредактировал Karataev - Четверг, 11.01.2018, 23:07
 
Ответить
СообщениеПротестировать у меня нет возможности, т.к. я не знаю, где взять Excel файл в интернете, а по Вашей ссылке нужно вводить регистрационные данные.
Убрал из кода лишнее и окружил сохранение файла кодом, который может быть не будет запускать сообщение, нужно ли сохранять файл.


Автор - Karataev
Дата добавления - 11.01.2018 в 22:27
Tunka-s Дата: Четверг, 11.01.2018, 22:33 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, Спасибо большое! Сейчас попробую и напишу результат!
 
Ответить
СообщениеKarataev, Спасибо большое! Сейчас попробую и напишу результат!

Автор - Tunka-s
Дата добавления - 11.01.2018 в 22:33
Tunka-s Дата: Четверг, 11.01.2018, 22:53 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev,
Видимо у меня такой бардачный код, что понять его невозможно. :) У меня два файла, один с данными рабочий, другой на шаре сохранен для накапливания информации. Я вижу в вашем коде только один остался. Но это не суть важно. Я так понимаю, что убить всплывающие окна должна вот эта строчка?

[vba]
Код
Application.DisplayAlerts = False
[/vba]

А для чего нужны вот эти две?

[vba]
Код
Application.DisplayAlerts = True
bk.Close SaveChanges:=False
[/vba]


Сообщение отредактировал Tunka-s - Четверг, 11.01.2018, 23:08
 
Ответить
СообщениеKarataev,
Видимо у меня такой бардачный код, что понять его невозможно. :) У меня два файла, один с данными рабочий, другой на шаре сохранен для накапливания информации. Я вижу в вашем коде только один остался. Но это не суть важно. Я так понимаю, что убить всплывающие окна должна вот эта строчка?

[vba]
Код
Application.DisplayAlerts = False
[/vba]

А для чего нужны вот эти две?

[vba]
Код
Application.DisplayAlerts = True
bk.Close SaveChanges:=False
[/vba]

Автор - Tunka-s
Дата добавления - 11.01.2018 в 22:53
Karataev Дата: Четверг, 11.01.2018, 22:58 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
[vba]
Код
Application.DisplayAlerts = True
[/vba]
включение сообщений.
[vba]
Код
bk.Close SaveChanges:=False
[/vba]
закрытия файла без сохранения. Сделано потому, что иногда вроде ничего не делаешь, а файл закрываешь, а он предлагает сохранить.


 
Ответить
Сообщение[vba]
Код
Application.DisplayAlerts = True
[/vba]
включение сообщений.
[vba]
Код
bk.Close SaveChanges:=False
[/vba]
закрытия файла без сохранения. Сделано потому, что иногда вроде ничего не делаешь, а файл закрываешь, а он предлагает сохранить.

Автор - Karataev
Дата добавления - 11.01.2018 в 22:58
Karataev Дата: Четверг, 11.01.2018, 23:06 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
Изменил макрос в посте 2, чтобы работал с двумя файлами.


 
Ответить
СообщениеИзменил макрос в посте 2, чтобы работал с двумя файлами.

Автор - Karataev
Дата добавления - 11.01.2018 в 23:06
Tunka-s Дата: Четверг, 11.01.2018, 23:14 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, Спасибо вам большое-пребольшое. Вставила три строчки в конец кода и вроде все работает. Завтра посморю еще, что вы мне почистили. :) Просто скопировать ваш код не могу, потому что мой оригинальный намного длинее. Я просто поудаляла кучу всего перед тем как здесь его поместить, а вы поменяли переменные, теперь надо будет с пристрастием смотреть. Спасибо еще раз. Удивительно как все в итоге просто было!
 
Ответить
СообщениеKarataev, Спасибо вам большое-пребольшое. Вставила три строчки в конец кода и вроде все работает. Завтра посморю еще, что вы мне почистили. :) Просто скопировать ваш код не могу, потому что мой оригинальный намного длинее. Я просто поудаляла кучу всего перед тем как здесь его поместить, а вы поменяли переменные, теперь надо будет с пристрастием смотреть. Спасибо еще раз. Удивительно как все в итоге просто было!

Автор - Tunka-s
Дата добавления - 11.01.2018 в 23:14
Tunka-s Дата: Пятница, 12.01.2018, 13:26 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.

После тестирования сегодня выяснилось, что все равно макро работает через раз. Иногда передает только половину информации, иногда всю, иногда закрывает файл, иногда нет. Я тут постаралась сделать выжимку и прикрепила то что получилось. Файл в который информация должна передаваться может быть любой совершенно. Просто надо ссылку поменять в коде на любой пустой файл на вашем компе. Помогите пожалуйста найти проблему!
К сообщению приложен файл: Data_from.xlsm(89Kb)
 
Ответить
СообщениеДобрый день.

После тестирования сегодня выяснилось, что все равно макро работает через раз. Иногда передает только половину информации, иногда всю, иногда закрывает файл, иногда нет. Я тут постаралась сделать выжимку и прикрепила то что получилось. Файл в который информация должна передаваться может быть любой совершенно. Просто надо ссылку поменять в коде на любой пустой файл на вашем компе. Помогите пожалуйста найти проблему!

Автор - Tunka-s
Дата добавления - 12.01.2018 в 13:26
Karataev Дата: Пятница, 12.01.2018, 14:07 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
Исходная проблема то была в другом (первый Ваш пост): появлялось сообщение при выключении компьютера.
Эта проблема решилась и возникла новая проблема?




Сообщение отредактировал Karataev - Пятница, 12.01.2018, 14:08
 
Ответить
СообщениеИсходная проблема то была в другом (первый Ваш пост): появлялось сообщение при выключении компьютера.
Эта проблема решилась и возникла новая проблема?

Автор - Karataev
Дата добавления - 12.01.2018 в 14:07
Tunka-s Дата: Пятница, 12.01.2018, 15:36 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, Ну я бы не сказала, что совсем новая. Исходная проблема была в том, что файл где-то в бэкграунде оставался открытым, и при повторном к нему обращении туда невозможно было передать информацию, хотя ошибка и не появлялась. При перезагрузке компа действительно выскакивали эти окошки. Теперь окошки исчезли, это так, но файл то все еще блокирутся где-то и получaется, что 2 раза все работает, на третий зависает. Ну совсем новая, это то, что из 5 записей которые должны создаться в новом файле иногда создается все 5, иногда первая и последняя, иногда две посередине. Это меня вообще вводит в ступор. Как так может быть?
 
Ответить
СообщениеKarataev, Ну я бы не сказала, что совсем новая. Исходная проблема была в том, что файл где-то в бэкграунде оставался открытым, и при повторном к нему обращении туда невозможно было передать информацию, хотя ошибка и не появлялась. При перезагрузке компа действительно выскакивали эти окошки. Теперь окошки исчезли, это так, но файл то все еще блокирутся где-то и получaется, что 2 раза все работает, на третий зависает. Ну совсем новая, это то, что из 5 записей которые должны создаться в новом файле иногда создается все 5, иногда первая и последняя, иногда две посередине. Это меня вообще вводит в ступор. Как так может быть?

Автор - Tunka-s
Дата добавления - 12.01.2018 в 15:36
Karataev Дата: Пятница, 12.01.2018, 18:31 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
Вместо этих двух строк
[vba]
Код
Set xl0 = Nothing
Set xlwb = Nothing
[/vba]
используйте одну эту:
[vba]
Код
objExcel.Quit
[/vba]
Т.к. не понятно, что такое "Nothing", а "Quit" это завершение работы программы.
Nothing имеет смысл использовать во время работы макроса для каких-то задач, а в конце работы макроса вроде нет смысла использовать Nothing, т.к. после работы макроса, переменные, находящиеся внутри процедур, сами станут Nothing.


 
Ответить
СообщениеВместо этих двух строк
[vba]
Код
Set xl0 = Nothing
Set xlwb = Nothing
[/vba]
используйте одну эту:
[vba]
Код
objExcel.Quit
[/vba]
Т.к. не понятно, что такое "Nothing", а "Quit" это завершение работы программы.
Nothing имеет смысл использовать во время работы макроса для каких-то задач, а в конце работы макроса вроде нет смысла использовать Nothing, т.к. после работы макроса, переменные, находящиеся внутри процедур, сами станут Nothing.

Автор - Karataev
Дата добавления - 12.01.2018 в 18:31
Tunka-s Дата: Пятница, 12.01.2018, 21:26 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, Спасибо, попробую. А есть какие-нибудь идеи по поводу неполной передачи данных? :)
 
Ответить
СообщениеKarataev, Спасибо, попробую. А есть какие-нибудь идеи по поводу неполной передачи данных? :)

Автор - Tunka-s
Дата добавления - 12.01.2018 в 21:26
Karataev Дата: Пятница, 12.01.2018, 21:30 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
Скачайте файл из интернета и поработайте с ним. Если проблем не будет, значит проблема связана с интернетом.
В таком случае скачивайте файл, обрабатывайте его, а затем отсылайте обратно в интернет. В таком случае точно все сохранится.


 
Ответить
СообщениеСкачайте файл из интернета и поработайте с ним. Если проблем не будет, значит проблема связана с интернетом.
В таком случае скачивайте файл, обрабатывайте его, а затем отсылайте обратно в интернет. В таком случае точно все сохранится.

Автор - Karataev
Дата добавления - 12.01.2018 в 21:30
Tunka-s Дата: Пятница, 12.01.2018, 21:33 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я скачала уже и попробовала. Та же ерунда. Я тоже на интернет грешила, но нет. Рядом два лежат в одной папочке на диске С и все равно то две строчки, то три, то пять. Мистика, как по мне.
 
Ответить
СообщениеЯ скачала уже и попробовала. Та же ерунда. Я тоже на интернет грешила, но нет. Рядом два лежат в одной папочке на диске С и все равно то две строчки, то три, то пять. Мистика, как по мне.

Автор - Tunka-s
Дата добавления - 12.01.2018 в 21:33
Karataev Дата: Пятница, 12.01.2018, 21:51 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
У метода "Close" Вы неправильно записали параметр - не поставили двоеточие:
[vba]
Код
xlwb.Close SaveChanges:=False
[/vba]
И используйте:
[vba]
Код
xl0.Quit
[/vba]
В конце должно быть так:
[vba]
Код
Application.DisplayAlerts = False
xlwb.Save
Application.DisplayAlerts = True
xlwb.Close SaveChanges:=False
xl0.Quit
[/vba]
Обработчик ошибок не используйте везде, а только там, где надо. Когда он больше не нужен, отключайте его.
[vba]
Код
On Error Resume Next
On Error GoTo 0
[/vba]




Сообщение отредактировал Karataev - Пятница, 12.01.2018, 21:53
 
Ответить
СообщениеУ метода "Close" Вы неправильно записали параметр - не поставили двоеточие:
[vba]
Код
xlwb.Close SaveChanges:=False
[/vba]
И используйте:
[vba]
Код
xl0.Quit
[/vba]
В конце должно быть так:
[vba]
Код
Application.DisplayAlerts = False
xlwb.Save
Application.DisplayAlerts = True
xlwb.Close SaveChanges:=False
xl0.Quit
[/vba]
Обработчик ошибок не используйте везде, а только там, где надо. Когда он больше не нужен, отключайте его.
[vba]
Код
On Error Resume Next
On Error GoTo 0
[/vba]

Автор - Karataev
Дата добавления - 12.01.2018 в 21:51
Tunka-s Дата: Пятница, 12.01.2018, 22:12 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, сейчас все исправлю и попробую.
 
Ответить
СообщениеСпасибо, сейчас все исправлю и попробую.

Автор - Tunka-s
Дата добавления - 12.01.2018 в 22:12
Tunka-s Дата: Пятница, 12.01.2018, 22:54 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Теперь спряшивает, хочу ли я переписать уже существующий файл и при ответе -нет, выдает ошибку в
[vba]
Код
xlwb.Save
[/vba]

Вообще, что интересно, если при связи с шарой, файл не закрывался через 2 раза на третий, то когда файл на том же диске, что и исходный, то он не закрывается в 100% случаев. Это вообще возможно?


Сообщение отредактировал Tunka-s - Пятница, 12.01.2018, 23:04
 
Ответить
СообщениеТеперь спряшивает, хочу ли я переписать уже существующий файл и при ответе -нет, выдает ошибку в
[vba]
Код
xlwb.Save
[/vba]

Вообще, что интересно, если при связи с шарой, файл не закрывался через 2 раза на третий, то когда файл на том же диске, что и исходный, то он не закрывается в 100% случаев. Это вообще возможно?

Автор - Tunka-s
Дата добавления - 12.01.2018 в 22:54
Karataev Дата: Пятница, 12.01.2018, 23:02 | Сообщение № 18
Группа: Проверенные
Ранг: Старожил
Сообщений: 1024
Репутация: 367 ±
Замечаний: 0% ±

Excel
У меня нет такой проблемы, не знаю, почему у Вас такое.


 
Ответить
СообщениеУ меня нет такой проблемы, не знаю, почему у Вас такое.

Автор - Karataev
Дата добавления - 12.01.2018 в 23:02
Tunka-s Дата: Пятница, 12.01.2018, 23:06 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, Т.е. у вас все работает? И данные передаются и файл сохраняется? Это уже хорошо. Может у коллег тогда тоже будет работать...

Ладно. Может кто-нибудь еще посмотрит. Там же один копипаст, что же мешает. :(
Завтра еще поиграю, но с моими знаниями это конечно просто трата времени.


Сообщение отредактировал Tunka-s - Пятница, 12.01.2018, 23:10
 
Ответить
СообщениеKarataev, Т.е. у вас все работает? И данные передаются и файл сохраняется? Это уже хорошо. Может у коллег тогда тоже будет работать...

Ладно. Может кто-нибудь еще посмотрит. Там же один копипаст, что же мешает. :(
Завтра еще поиграю, но с моими знаниями это конечно просто трата времени.

Автор - Tunka-s
Дата добавления - 12.01.2018 в 23:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сохранить и закрыть файл в бэкграунде (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!