Adodb stream не удается записать файл

Обновлено: 04.07.2024


Порядок настройки
1. Создать database в mssql,
2. таблица images: id(bigint, not null, identify), image (image), name (nvarchar 150), size (int)
3. хранимая процедура insert
4. на форме 1с поле ввода с типом Картинка, связанное с реквизитом строка
5. ado stream сохраняет в файл при чтении из SQL. Существенно быстрее, чем через память.
6. Процедуры ниже:

&НаКлиенте
Процедура b2b_КартинкаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗаблокироватьДанныеФормыДляРедактирования();

Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = НСтр("ru='Для выбора изображения необходимо записать объект. Записать?'");
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Записать();
Иначе
Возврат
КонецЕсли;

КонецЕсли;

//СоединениеСБазой = MSSQL_CreateConnection();
////Картинка = Новый Картинка("D:\550\duomed.jpg");
//SetImage(Строка(Объект.Ссылка.УникальныйИдентификатор()), "duomed.jpg", "D:\550\duomed.jpg");

ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Текст'; en = 'Text'") + "Формат PNG(*.jpg*)|*.jpg|Формат JPEG(*.jpg;*.jpg)|*.jpg;*.jpg|Все файлы(*.*)|*.*";
ВыборФайла.Фильтр = Фильтр;
ВыборФайла.МножественныйВыбор = Ложь;
ВыборФайла.Заголовок = "Выберите файлы";
Если ВыборФайла.Выбрать() Тогда
Файл = Новый Файл(ВыборФайла.ПолноеИмяФайла);
СоединениеСБазой = MSSQL_CreateConnection();
SetImage(Строка(Объект.Ссылка.УникальныйИдентификатор()), Файл.Имя, ВыборФайла.ПолноеИмяФайла);
Сообщить("Файл записан: " + ВыборФайла.ПолноеИмяФайла);
Иначе
//Предупреждение("Файл не найден!");
КонецЕсли;

&НаКлиенте
Функция MSSQL_CreateConnection()
Попытка
ADOСоединение = Новый ComОбъект("ADODB.Connection");
СтрокаСоединения = "Provider=SQLOLEDB.1;
|Persist Security Info=False;
|User /> |Pwd=TZSGn5ZTZSGn5Z;
|Data Source=fsb;
|Initial Catalog=1C.Gate";
ADOСоединение.Open(СтрокаСоединения);
Возврат ADOСоединение;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции

&НаКлиенте
Функция MSSQL_CloseConnection(Подключение)
Подключение.Close();
КонецФункции

Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@description";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 201; //
Парам.Size = СтрДлина(Description);
Парам.Value = Description;
Command.Parameters.Append(Парам);

Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@source";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 201; //
Парам.Size = СтрДлина(Source);
Парам.Value = Source;
Command.Parameters.Append(Парам);

Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2
Поток.Open();
Поток.LoadFromFile(FileName);
локПотокБайт = Новый ComSafeArray(Поток.Read());

Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@image";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 205; //205 - adLongVarBinary
Парам.Size = локПотокБайт.GetLength();
Парам.Value = локПотокБайт;
Command.Parameters.Append(Парам);

// размер картинки
Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@size";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 3; //
//Парам.Size = СтрДлина(Size);
Парам.Value = локПотокБайт.GetLength();
Command.Parameters.Append(Парам);

Command.Execute();
MSSQL_CloseConnection(Connection);
КонецФункции

Функция ConvertFromStream(Buffer)
Длина = Buffer.Количество();
Буфер = новый БуферДвоичныхДанных(Длина);
Для индекс = 0 по Длина - 1 Цикл
Буфер.Установить(индекс,Buffer[индекс]);
КонецЦикла;

Поток = новый ПотокВПамяти(Буфер);
ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();

Возврат ДвоичныеДанные;
КонецФункции

При чтении из файла в кодировке UTF-8, содержащего символы определяющие денежные единицы, например символ Йены (код в таблице Unicode U+00A5) или анг.фунта (U+00A3), при условии что не установлена опция On Error Resume Next получаем ошибку

Ошибка выполнения Microsoft VBScript: Недопустимый вызов или аргумент процедуры

Точнее ошибка возникает не при чтении, а при дальнейшем использовании строки считанной из файла.

Я написал тестовый пример (см. ниже), который создает строки в формате UTF-8, содержащие символы C2A0 . C2BF (символы Unicode U+00A0. U+00BF) и потом их конвертирует в Win-1251 - в результате получается, что создаются не пустыми лишь некоторые файлы.
U+00A0 U+00A4 U+00A6 U+00A7 U+00A9 U+00AB U+00AC U+00AD U+00AE U+00B0 U+00B1 U+00B5 U+00B6 U+00B7 U+00BB.
Остальные создаются пустыми.
Парадокс: Если конвертировать UTF-8 в кодовую таблицу 866, то таких проблем не возникает. Некоторые символы просто не перекодируются и всё - т.е. файлы в 866-кодировке в тестовом примере получаются размером 2 либо 3 байта.

Кто-нибудь из гуру может прокомментировать такое странное поведение ADODB.Stream?


PS: при использовании аналогичной функции из копилки с перекодировкой файла таких проблем не возникает

2 Ответ от BeS Yara 2012-12-04 10:54:06

  • BeS Yara
  • Разработчик
  • Неактивен

Проблема не в ADO.DB, проблема в FSO - ошибка возникает не при работе со строкой, а при попытке её записать в файл методом WriteLine(достаточно запустить скрипт в отладчике).
Соответственно файл уже создан(пустой), записать не удалось. А так как на ошибки забиваем - идём дальше и получаем толпу пустых файлов. Возможно какой-то баг FSO при попытке писать UTF-8 в открытый как ASCII файл.

Я написал тестовый пример (см. ниже), который создает строки в формате UTF-8, содержащие символы C2A0 . C2BF (символы Unicode U+00A0. U+00BF) и потом их конвертирует в Win-1251

Вообще-то, пример делает наоборот
Чтобы конвертировать из UTF в cp1251 нужно аргументы поменять местами

3 Ответ от yuriy2000 2012-12-05 05:05:27

касательно использования StrConv(sBuf,"UTF-8","windows-1251") - дискуссия была здесь:

4 Ответ от BeS Yara 2012-12-05 11:01:20

  • BeS Yara
  • Разработчик
  • Неактивен

Правда в свете этого:

Charset Property (ADO):Sets or returns a String value that specifies the character set into which the contents of the Stream will be translated. The default value is Unicode.


а также приведённого в MSDN примера, всё выглядит не очень логично(для меня), но на тестовом примере(чтение строки из файла в UTF-8, StrConv, запись в ASCII файл) это подтвердилось(похоже я в корне неверно понимаю работу с ado.stream ).

Однако, в Вашем случае если ADO и виноват, то лишь косвенно - ошибка возникает всё-таки после того как ADO своё отработал.

5 Ответ от yuriy2000 2012-12-05 20:25:11

Действительно.

.

Однако, в Вашем случае если ADO и виноват, то лишь косвенно - ошибка возникает всё-таки после того как ADO своё отработал.


Возможно, что проблема и не ado.stream , но всё-таки что-то с ним не так, ведь если перекодировать в cp866, то проблем не возникает.

6 Ответ от BeS Yara 2012-12-06 13:04:53

  • BeS Yara
  • Разработчик
  • Неактивен

Если посмотреть ASCII-код символов на выходе из потока, то можно обратить внимание на характерный факт: "ненулевые" файлы возникают для символов для которых vbscript выдаёт одинаковый код и через Asc и через AscW. Для части символов коды совпадают, для остальных Asc=63(вопросительный знак), и ошибка метода .WriteLine.

Такое впечатление, что проблемы нет только для символов имеющих "синоним" или дубль в US-ASCII. Навеяно вики(ASCII-Национальные варианты ASCII, первый абзац), но обосновать не могу - не по всем работающим символам в статье есть упоминание.

Полагаю, что пример(по работе напрямую с файлом) работает без проблем по той причине, что ADO.Stream читает и пишет файлы не посимвольно, а побайтово. А потому вся работа с кодировками выполняется в нём без лишних "прокладок".

В Вашем случае прибавляется vbscript со своими тараканами.

Всё ниже сказанное - великое колдунство, которое я сам до конца не понял(какая-то идея под коркой шевелиться, но сформулировать не получается).:)
Если заменить:

то ошибка не возникает, файлы пишутся все.

P.S. буду премного благодарен, если найдётся голова, которая мне популярно пояснит что же я сделал и почему запись 161-го(например) символа в рассматриваемом скрипте(изначальном) даёт ошибку, а этот код нет:

P.P.S. возможно таки ADO тут "при чём".

7 Ответ от YMP 2012-12-06 14:03:14












PS: при использовании аналогичной функции из копилки с перекодировкой файла таких проблем не возникает

Но эта функция вам не подходит? Тогда поясните, в чём конкретно ваша задача заключается, что вы пытаетесь сделать?

8 Ответ от yuriy2000 2012-12-06 18:09:48


PS: при использовании аналогичной функции из копилки с перекодировкой файла таких проблем не возникает

Но эта функция вам не подходит? Тогда поясните, в чём конкретно ваша задача заключается, что вы пытаетесь сделать?

Да, эта функция из копилки (с конвертацией всего файла за один проход) решила мои проблемы, в конкретном случае. но дело в том, что хотелось бы конвертировать строки в памяти. В будущем.


Может быть совместными усилиями найдем решение проблемы с этой StrConv.

9 Ответ от YMP 2012-12-06 20:39:33











Я написал тестовый пример (см. ниже), который создает строки в формате UTF-8

Тогда вам нужно использовать функцию ChrB. У вас в примере создаётся строка из двух юникодных двухбайтных символов (UTF-16), а не один двухбайтный символ UTF-8.

Если читать файл UTF-8 через FSO как ANSI, то во время чтения происходит конвертация в UTF-16, поскольку таков формат строк в VBScript. Конвертация пойдёт по таблице 1251 и в переменной окажется нечитаемый набор символов.

Восстановить строку можно записью из переменной в Stream, кодировка которого 1251. При этом произойдёт конвертация уже из Юникода по той же 1251 таблице, т.е. процесс, обратный тому, который привёл к порче строки. После этого меняем кодировку Stream на UTF-8, чтобы она соответствовала содержимому и читаем снова в переменную, при этом происходит конвертация в Юникод, но уже по правильной таблице UTF-8. В итоге имеем в переменной читаемый текст в UTF-16.


При попытке сохранить его через FSO в файл в кодировке 1251 проблема возникает, судя по всему, из-за символов, отсутствующих в целевой кодовой странице, т.е. тех, которые были бы заменены на знак вопроса. Может, забота о том, чтобы у пользователя информация не терялась.

10 Ответ от YMP 2012-12-06 21:58:18











Если всё же нужно записать такой текст через FSO в файл в 1251, пусть даже с заменой отсутствующих в ней символов на "?", то можно предварительно сделать так:

Получим ту же строку UTF-16, но где неродные для 1251 символы уже заменены на знаки вопроса, так что FSO не будет протестовать.

Объект ADO Stream представляет поток двоичных данных или текста.

В этом справочнике объект ADO Stream рассматривается только как расширение объекта FileSystemObject и можно получить из URL-адреса, указывающего на файл, содержащий двоичные или текстовые данные.

Для создания внутри сценария экземпляра объекта ADO Stream можно воспользоваться методом CreateObject объекта WScript:

Также можно использовать объект ActiveXObject языка JScript (с помощью этого объекта можно работать с файловой системой из сценариев, находящихся внутри HTML-страниц):

Свойства объекта ADO Stream

CharSetУстанавливает или возвращает значение, указывающее, в какой набор символов должно быть переведено содержимое. Это свойство используется только с текстовыми объектами Stream.
EOSВозвращает, находится ли текущая позиция в конце потока или нет.
LineSeparatorЗадает или возвращает символ разделителя строк, используемый в текстовом объекте Stream.
PositionУстанавливает или возвращает текущую позицию (в байтах) от начала объекта Stream.
SizeВозвращает размер открытого объекта Stream.
TypeЗадает или возвращает тип данных в объекте Stream.

Методы объекта ADO Stream

CloseЗакрывает объект Stream.
CopyToКопирует указанное количество символов / байтов из одного объекта Stream в другой объект Stream.
LoadFromFileЗагружает содержимое файла в объект Stream.
OpenОткрывает объект Stream.
ReadСчитывает весь поток или указанное количество байтов из двоичного объекта Stream.
ReadTextСчитывает весь поток, строку или указанное количество символов из текстового объекта Stream.
SaveToFileСохраняет двоичное содержимое объекта Stream в файл.
SetEOSУстанавливает текущую позицию как конец потока (EOS).
SkipLineПропускает строку при чтении текстового потока.
WriteЗаписывает двоичные данные в объект двоичного потока.
WriteTextЗаписывает символьные данные в текстовый объект Stream.

CharSet

Свойство CharSet устанавливает или возвращает значение, указывающее, в какой набор символов должно быть преобразовано содержимое Stream (при сохранении в буфере объекта Stream). По умолчанию - «Unicode».

Синтаксис

charset - набор символов, в который будет переведено содержимое Stream. Значение по умолчанию - Unicode. Список имен наборов символов, известных системе находится в реестре Windows (HKEY_CLASSES_ROOT\MIME\Database\Charset).

Примечания

Для открытого потока текущая позиция должна быть в начале потока (0), чтобы можно было установить кодировку.

Это свойство используется только с текстовыми объектами Stream.

Свойство EOS возвращает логическое значение, которое указывает, находится ли текущая позиция в конце потока. true указывает, что текущая позиция находится в конце потока.

Синтаксис

Примечания

чтобы установить текущую позицию в конец потока, используйте метод SetEOS.

чтобы определить текущую страницу потока, используйте свойство Position.

LineSeparator

Свойство LineSeparator устанавливает или возвращает значение LineSeparatorsEnum, которое указывает символ разделителя строк, используемом в текстовом объекте Stream. По умолчанию - adCRLF.

Синтаксис

LineSeparatorsEnum:
adCRLF -1 По умолчанию. Перевод строки возврата каретки
adLF 10 Только перевод строки
adCR 13 Только возврат каретки

Position

Свойство Position устанавливает или возвращает значение num, которое указывает текущую позицию (в байтах) от начала объекта Stream.

Синтаксис

num - позиция (в байтах) от начала объекта Stream.

Свойство Size возвращает длинное значение, которое указывает размер (в байтах) объекта Stream.

Синтаксис

Примечания

Это свойство можно использовать только для открытого объекта Stream.

Это свойство возвращает -1, если размер потока неизвестен.

Свойство Type устанавливает или возвращает значение StreamTypeEnum, которое указывает тип данных в объекте Stream. По умолчанию - adTypeText.

Синтаксис

StreamTypeEnum:
adTypeBinary 1 Двоичные данные
adTypeText 2 По умолчанию. Текстовые данные

Close()

Метод Close() используется для закрытия объекта Stream и освобождения системных ресурсов.

Синтаксис

Когда объект закрыт, он не удаляется из памяти. Можно изменить настройки свойства и открыть его снова позже.

CopyTo()

Метод CopyTo() используется для копирования указанного количества символов или байтов из открытого объекта Stream в другой открытый объект Stream.

Синтаксис

Параметры

dest Обязательный. Куда копировать Stream (содержит ссылку на открытый объект Stream). numchars Необязательно. Целое число, указывающее количество символов или байтов, которые должны быть скопированы из текущей позиции в исходном потоке в целевой поток. По умолчанию -1 (копирует все данные из текущей позиции в EOS).

Примечания

Если указанное число больше доступного количества байтов/символов до EOS, то копируются только байты/символы из текущей позиции в EOS.

LoadFromFile()

Метод LoadFromFile() используется для загрузки содержимого существующего файла в открытый объект Stream. Все существующие данные в объекте Stream будут перезаписаны.

Синтаксис

Параметры

file Имя существующего файла для загрузки в объект Stream.

Примечание

После вызова этого метода текущая позиция устанавливается на начало потока (Position = 0).

Метод Open() используется для открытия объекта Stream.

Синтаксис

Параметры

Параметры для сокращенного варианта справочника не являются обязательными.

Метод Read() используется для чтения всего потока или указанного количества байтов из двоичного объекта Stream и возвращает полученные данные (val) в качестве варианта.

Этот метод используется только с двоичными объектами Stream, для текстовых объектов Stream используйте метод ReadText().

Синтаксис

Параметры

numbytes Необязательно. Число байтов для чтения из файла или значение. По умолчанию. Читает все байты из потока от текущей позиции до EOS.
Если вы указали больше, чем количество байтов, оставшихся в потоке, возвращаются только оставшиеся байты.

ReadText()

Метод ReadText() используется для чтения всего потока, строки или указанного количества символов из текстового объекта Stream и возвращает полученные данные в виде строки.

Этот метод используется только с текстовыми объектами Stream, для двоичных объектов Stream используйте метод Read().

Синтаксис

Параметры

numbytes Необязательно. Количество символов для чтения из файла или значение StreamReadEnum. По умолчанию adReadAll.
Если вы указали больше, чем количество байтов, оставшихся в потоке, возвращаются только оставшиеся байты. StreamReadEnum:
adReadAll -1 По умолчанию. Читает все символы из потока, от текущей позиции до EOS
adReadLine -2 Читает следующую строку из потока

SaveToFile()

Метод SaveToFile() используется для сохранения двоичного содержимого открытого объекта Stream в локальный файл.

После вызова этого метода текущая позиция в потоке устанавливается на начало потока (Position = 0).

Синтаксис

Параметры

file Обязательно. Имя файла для сохранения содержимого объекта Stream. opt Значение opt, указывающее, следует ли создавать файл, если он не существует (1), или перезаписывать его (2).

SetEOS()

Метод SetEOS() используется для установки текущей позиции как конца потока (EOS). Этот метод также обновляет свойство EOS.

Любые данные, выходящие за рамки нового EOS, будут усечены и потеряны.

Синтаксис

SkipLine()

Метод SkipLine() используется для пропуска строки при чтении текстового потока. Все символы, включая разделитель строк, пропускаются.

Этот метод используется только с текстовыми объектами Stream.

Синтаксис

Write()

Метод Write() используется для записи двоичных данных в двоичный объект Stream.

Синтаксис

Параметры

buffer Массив байтов для записи в двоичный объект Stream

Комментарии

Если в объекте Stream есть данные, а текущая позиция - EOS, новые данные будут добавлены помимо существующих данных. Если текущая позиция не EOS, существующие данные будут перезаписаны.

Если вы напишете предыдущую версию EOS, размер потока увеличится. EOS будет установлен на последний байт в потоке. Если вы не записываете предыдущий EOS, текущая позиция будет установлена на следующий байт после вновь добавленных данных. Ранее существующие данные не будут усечены. Вызовите метод SetEOS для усечения.

Примечание

Этот метод используется только с двоичными объектами Stream, для объектов textStream используйте метод WriteText.

WriteText()

Метод WriteText() используется для записи текста в текстовый объект Stream.

Синтаксис

Параметры

data Обязательно. Текст, который будет записан в текстовый объект Stream. opt Необязательно. Значение, указывающее, нужно ли добавлять к тексту разделитель строк:
0 - По умолчанию. Записывает указанный текст в объект Stream
1 - Записывает указанный текст и разделитель строк в объект Stream.
Если свойство LineSeparator не определено, возникнет ошибка времени выполнения.

Комментарии

Если в объекте Stream есть данные, а текущая позиция - EOS, новые данные будут добавлены помимо существующих данных. Если текущая позиция не EOS, существующие данные будут перезаписаны.

Если вы напишете предыдущую версию EOS, размер потока увеличится. EOS будет установлен на последний символ в потоке. Если вы не пишете после EOS, текущая позиция будет установлена ​​на следующий символ после вновь добавленных данных. Ранее существующие данные не будут усечены. Вызовите метод SetEOS для усечения.

Примечание

Этот метод используется только с текстовыми объектами Stream, для двоичных объектов Stream используйте метод Write.

Пример.

Смена кодировки файла

Для смены кодировки файлов файла можно воспользоваться моей программой uconv. Эта программа была написана для моих HTA-скриптов и предназначена для перекодировки данных из одной кодировки в другую. С описанием прораммы можно ознакомиться здесь

Write your own adovbs.inc file, with only the handful of constants you need;
Only define constants as you need them;
Place the relevant constant/value pairs in a comment, and use the integer equivalent in the actual code; or
Use < !--METADATA. -- > references in global.asa:

< !--METADATA
TYPE='TypeLib'
NAME='Microsoft ActiveX Data Objects 2.7 Library'
UUID=''
VERSION='2.7'-- >
Версия ADO у меня 2.7 , в global.asa прописал что надо, файл заинклудил.

Правда в файле adovbs.inc нет константы adSaveCreateNotExists.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Прочитать файл F, отсортировать с помощью быстрой сортировки, и записать результат в файл G
дана вот такая задача: создать файл ф в котором были-бы записаны 30 000 чисел в случайном.


Файл: Как с помощью Python записать (а не перезаписать) данные из базы SQLite в файл lex.txt.
Помогите с разработкой части проекта, пожалуйста! Есть файл db.sqlite в котором таджикские слова.


Файл H заполнить целыми числами, полученными помощью генератора случайных чисел. В файл M записать значение файла H, кратное 5
1) Файл H заполнить целыми числами, полученными помощью генератора случайных чисел. В файл M.

Как с помощью VB записать текстовый файл.
Нужно очень срочно Заранее благодарен

Dim objStream
Set objStream = CreateObject('ADODB.Stream')

objStream.Type = 2
objStream.Open
objStream.WriteText 'Buy a copy of Designing Active Server Pages. '

Как записать структуру в файл с помощью fstream?
доброго времени суток, нужна ваша помощ. припустим у нас есть структура: struct group < char.

Результат сортировки записать в файл с помощью records
нужно результат проги(сортировка) записать в файл с помощью records.


Необходимо записать массив чисел из текстового файла в нетипизированный файл
Дан текстовый файл, который содержит массив целых чисел. Необходимо записать массив чисел из.

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

ADODB – библиотека доступа к базам данных.
ADODB.Stream - в данном случае, проще говоря, это поток для связи с файлом.

Предварительно в файле Word должен быть выделен некоторый отрывок, который записывается в текстовый файл.
Файл Word с выделенным отрывком должен быть активным.
Для записи можно применить следующий макрос:

Выделенный фрагмент записывается в текстовый файл в той же папке, в которой размещен исходный файл Word.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

2 Ответ от Alex_Gur 11.08.2015 12:34:21

Загрузка из файла

Загрузка производится в конец активного файла Word из текстового файла с именем «1.txt», размещенного в той же папке.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

Похожие темы

Запись данных в текстовый файл и из файла с помощью ADODB.Stream

Для всех пользователей текстового редактора Microsoft Word будет полезно познакомиться со встроенными функциями и настройками этой программы. Наш сайт о Microsoft Office Word даст ответ про: как включить предпросмотр в ворд 2010.

На форуме сайта Ворд Эксперт вам предложат различные варианты настроек, в зависимости от поставленных задач. Наш сайт о Microsoft Office Word даст ответ про: тормозят word файлы. Так существуют схемы для быстрого удаления лишних пробелов из текста, переформатирования и оформления в одном стиле различных кусков, работы с таблицами и многого другого. На портале о Microsoft Office Word вы узнаете про: как поменять нумерацию части списка в word 2003.

Здесь вы найдете шаблоны для часто повторяющихся схем оформления текста, макросы практически для любых операций, готовые решения и пошаговые инструкции для написания. На портале о Microsoft Office Word вы узнаете про: все про вставку в microsoft word. Также вы можете оставить заявку на любую работу, связанную с Вордом.

Читайте также: