Сохранить как слово vba
Обновлено: 21.11.2024
Энтони регулярно импортирует несколько отчетов в виде текстовых файлов (например, имя файла.txt) в Word. Затем он использует макросы для форматирования этой импортированной информации. После завершения макроса форматирования Энтони вручную использует «Сохранить как» для каждого отчета, чтобы сохранить его как документ Word. Ему интересно, какие команды он должен добавить в свой макрос, чтобы автоматизировать последний шаг сохранения данных. Энтони хотел бы, чтобы макрос сохранил файл с тем же корневым именем, что и исходный текстовый файл, только изменив его на формат Word, как в файле имя.docx.
Действия по фактическому сохранению файла относительно просты. Рассмотрим следующий фрагмент кода, который сохраняет документ в формате Word:
Имя файла хранится в переменной sDocName, а значение свойства FileFormat указывает, что вы хотите сохранить документ в формате Word. В существующем макросе осталось только настроить sDocName с желаемым именем файла.
Предполагая, что вы сохранили исходное имя текстового файла в переменной sOrigName, вы можете использовать следующий код, чтобы изменить расширение на .doc, а затем сохранить файл:
Код предполагает, что последние четыре символа sOrigName содержат расширение имени файла (точка плюс три символа). Они удалены и добавлено расширение «.docx». Если вы не уверены, насколько длинным будет расширение имени файла для исходного файла, вы можете положиться на функцию «Разделить», чтобы разделить его, если это необходимо:
Чтобы этот макрос работал, убедитесь, что вы объявили sNameParts как массив строк.
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице сайтов WordTips), я подготовил специальную страницу, содержащую полезную информацию. Нажмите здесь, чтобы открыть эту специальную страницу в новой вкладке браузера.
Биография автора
На его счету более 50 научно-популярных книг и множество журнальных статей. Аллен Уайатт является всемирно признанным автором. Он является президентом Sharon Parq Associates, компании, предоставляющей компьютерные и издательские услуги. Узнайте больше об Аллене.
Впервые здесь, поэтому, если я делаю что-то, чего не должен, будьте добры и просто дайте мне знать.
Я стажер, и в одном из моих упражнений есть следующее задание:
(a) напишите макрос, который использует для этого цикл For – если имя документа начинается со слова «Document», закройте этот документ.
(b) можете ли вы написать код, чтобы клиент не предлагается сохранять каждый раз, когда закрывается один из документов?
Я попробовал doc.Close (wdDoNotSaveChanges), но это по-прежнему вызывает запрос на сохранение для каждого документа.
Я с нетерпением жду ответа от вас, так как я действительно в тупике!
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Добро пожаловать на форум. Пожалуйста, ознакомьтесь с Правилами форума, чтобы понять, как работает форум и почему я добавил теги кода к вашему сообщению
Весь код VBA, размещенный на форуме, должен быть заключен в теги кода, которые вы пропустили, включая однострочные фрагменты кода. Обязательно используйте их в будущих сообщениях.
Как использовать теги кода
Просто выделите весь код и нажмите кнопку <> в меню сообщения выше, чтобы добавить теги кода.
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Спасибо, Рой, большое спасибо. Моя работа побудила меня использовать форумы для получения ответов, которые я ищу, поскольку они очень заняты и хотят, чтобы я проявлял инициативу.
Я исправил strName, но по-прежнему не могу отключить отображение запроса на сохранение.
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Попробуйте это, SaveChanges:=False должен закрыть документ без запросов и отменить все изменения.
Вам не нужно устанавливать doc, так как вы используете переменную в цикле
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Я ценю ваше предложение, но, к сожалению, мне по-прежнему выдается запрос на сохранение. Я прилагаю измененный код, которому предшествует мой код для создания 3 пустых документов с заголовками
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Вам не нужна линия
Application.DisplayAlerts не предотвращает запрос на сохранение.
Попробуйте изменить savechanges:=False на savechanges:=True
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Спасибо, Рой, я ценю замечание относительно ActiveDocument и Application.DisplayAlerts; теперь они удалены.
Я изменил "сохранить изменения" в соответствии с рекомендациями, но, к сожалению, приглашение сохранить по-прежнему отображается
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
сохранение изменений в Excel VBA останавливает подсказку. Я не понимаю, почему это не работает в Word
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Спасибо, Рой, я потратил пару дней, пытаясь заставить его работать, так что не расстраивайтесь. Я действительно ценю вашу помощь, хотя. Добрый день
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Я буду искать.
Документы, которые вы закрываете, были сохранены ранее?
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Спасибо, Рой, я ценю это. Нет, документы создаются, а затем этот новый макрос мгновенно закрывает их, не сохраняя.
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Это работает для меня
Я протестировал его на сохраненном документе и на недавно созданном несохраненном документе.
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Я только что понял, что вы снова отправили сообщение, не могли бы вы поверить, что это не работает для меня, лол.
Я скопировал и вставил ваш код и (кстати, мне очень понравилось, какой он короткий!) но, нет, запрос все равно появился.
В любом случае, хорошего вечера!
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Я тестировал его несколько раз, и он работает так, как ожидалось.
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Вот пример документа.
Просто создайте несколько документов и запустите код.
Файлы
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Здравствуйте, Рой, еще раз большое спасибо за ваше время и решение. Ниже вы увидите, что генерируется, когда я использую ваш документ/код. Создание документа и последующее его сохранение означает, что оба наших кода работают, но нет, если документ создается, а затем закрывается без сохранения изменений.
Пожалуйста, не подчеркивайте это, все в порядке. Честно
Добрый день
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Это действительно странно, потому что у меня код работает. Как называются книги, которые создает ваш код?
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Я помню, вы говорили, что это работает в Excel, но я думаю, что проблема в Word
Получено отзывов 803 балла 133 378 сообщений 26 307 Операционная система Windows (x64) Версия Excel Office 365
Нет, у меня работает в Word. Я приложил свой документ с рабочим кодом.
Надеюсь, это поможет
Новые пользователи должны прочитать Правила форума, прежде чем публиковать сообщения
Бесплатные инструменты и статьи для Excel см. на моем веб-сайте
Дох, конечно. Я запустил код из вашего документа с результатами, которые я дал выше. Возможно, ИТ-отдел моей фирмы внедрил какой-то офисный протокол, что означает, что код не соответствует требованиям?
Вы не забыли предоставить мне решение, вы можете быть счастливы и с чистой совестью, что решили это
Блог Excel, PowerPoint и MS Word, содержащий удобные и креативные фрагменты кода VBA. Эти коды макросов хорошо прокомментированы и полностью функциональны при копировании в модуль.
Что делает этот код макроса VBA
Деловой мир все больше зависит от мобильных компьютеров, и такие устройства, как планшеты и смартфоны, становятся все более популярными. Это, в свою очередь, вызвало повышенный спрос со стороны аналитиков на преобразование электронных таблиц в документы PDF, чтобы руководство могло просматривать ваши отчеты на ходу.
Ниже приведен простой макрос VBA, который позволит вам мгновенно преобразовать документ Microsoft Word в файл PDF. Код написан для сохранения вашего PDF-файла в той же папке, где в настоящее время находится файл документа Word. Если вам нужно внести изменения, надеюсь, вы сможете следить за моими комментариями к коду и настраивать код под свои нужды.
Затемнить CurrentFolder как строку
Затемнить FileName как строку
Затемнить myPath как строку
Затемнить UniqueName как логическое значение
'Хранить информацию о файле Word
myPath = ActiveDocument.FullName
CurrentFolder = ActiveDocument.Path & "\"
FileName = Mid(myPath, InStrRev(myPath, "\") + 1, _
InStrRev(myPath, ".") - InStrRev(myPath, "\") - 1)
' Файл уже существует?
Выполнить, пока UniqueName = False
DirFile = CurrentFolder & FileName & ".pdf"
If Len(Dir(DirFile)) <> 0 Then
UserAnswer = MsgBox("Файл уже Существует! Нажмите " & _
"[Да], чтобы переопределить. Нажмите [Нет], чтобы переименовать.", vbYesNoCancel)
If UserAnswer = vbYes Then
UniqueName = True
ElseIf UserAnswer = vbNo Then
Do
'Получить новое имя файла
FileName = InputBox("Provide New File Имя " & _
"(спросит еще раз, если вы укажете неверное имя файла)", _
"Введите имя файла", FileName)
'Выйти, если пользователь хочет
Если имя_файла = "False" или имя_файла = "" Затем выйти из подпрограммы
Цикл, пока допустимое имя_файла (имя_файла) = False
иначе
выйти из подпрограммы 'Отменить
Конец, если
Еще
УникальноеИмя = True
Конец, Если
Цикл
'Сохранить как PDF-документ
При ошибке перейти к проблемному сохранению
ActiveDocument.ExportAsFixedFormat _
OutputFileName:=CurrentFolder & FileName & ".pdf", _
ExportFormat:=wdExportFormatPDF < br />При ошибке Перейти к 0
'Подтвердить сохранение пользователю
с ActiveDocument
FolderName = Mid(.Path, InStrRev(.Path, "\") + 1, Len(.Path) - InStrRev(.Path, "\") "))
Конец
MsgBox "PDF сохранен в папке: " & FolderName
'Обработчики ошибок
ProblemSaving:
MsgBox "При сохранении PDF-файла возникла проблема. Чаще всего это происходит" & _
" из-за того, что исходный PDF-файл уже открыт."
Выйти из подкаталога
Функция проверки имени файла для сохранения
Ниже показана функция, которую вам нужно будет вставить вместе с вышеуказанным макросом. Функция VBA позволяет проверить любое имя файла, которое пользователи вводят для сохранения PDF-документа.
Затемнить TempPath как строку
Затемнить документ как документ
'Определить папку, в которой хранятся временные файлы
TempPath = Environ("TEMP")
'Создать временный файл XLS (XLS в случае наличия макросов)
При ошибке Перейти к InvalidFileName
Set doc = ActiveDocument.SaveAs2(ActiveDocument.TempPath & _
"\" & FileName & ".doc", wdFormatDocument)
В случае ошибки продолжить дальше
'Удалить временный файл
Убить doc.FullName
'Имя файла допустимо
ValidFileName = True
'ОБРАБОТЧИКИ ОШИБОК
InvalidFileName:
'Недопустимое имя файла
ValidFileName = False
Та же функциональность макросов для других приложений Office
По запросу я сделал аналогичные макросы для других приложений Office, которые вы можете использовать на регулярной основе для преобразования их файлов в документы PDF. Ссылки на эти конкретные посты следующие:
Как изменить это в соответствии со своими потребностями?
Возможно, это сообщение не дало вам точного ответа, который вы искали. У всех нас разные ситуации, и невозможно учесть каждую конкретную потребность, которая может возникнуть. Вот почему я хочу поделиться с вами: Мое руководство по быстрому решению ваших проблем! В этой статье я рассказываю о лучших стратегиях, которые я придумал за эти годы, чтобы получить быстрые ответы на сложные проблемы в Excel, PowerPoint, VBA, вы называете это!
Я настоятельно рекомендую вам ознакомиться с этим руководством, прежде чем просить меня или кого-либо еще в разделе комментариев решить вашу конкретную проблему. Я могу гарантировать, что в 9 случаях из 10 одна из моих стратегий даст вам ответы, которые вам нужны, быстрее, чем мне потребуется, чтобы вернуться к вам с возможным решением. Я изо всех сил стараюсь помочь всем, но иногда у меня нет времени ответить на все вопросы (кажется, часов в сутках никогда не бывает достаточно!).
Желаю вам удачи и надеюсь, что это руководство направит вас в правильном направлении!
Мы являемся одним из ведущих издателей технических книг в Великобритании. Мы опубликовали более 7 000 книг, видео, статей и руководств.
При работе с VBA для Excel вы можете подумать, что ваш код будет работать только с Excel.Однако тот факт, что VBA (Visual Basic для приложений) является общим для всех приложений в составе Office Suite, открывает массу возможностей.
Например, вы можете собирать данные в Excel через пользовательскую форму, а затем автоматически экспортировать их в документ Word. Прелесть этого в том, что все выполняется в фоновом режиме. Другими словами, вам не нужно вручную копировать данные из Excel, искать нужный документ Word, чтобы вставить эту информацию, сохранять файл, а затем снова закрывать Word.
В этой статье мы рассмотрим рецепты для:
- Создание нового экземпляра Word
- Написание и форматирование текста
- Копирование данных в Word
- Использование шаблонов и закладок
К концу вы сможете создавать документы Word из Excel.
Технические требования
Эти рецепты были написаны и разработаны для использования с MS Office 2019 и MS Office 365, установленными в Windows 8, 8.1 или 10.
Если ваше аппаратное и программное обеспечение соответствует этим требованиям, все готово.
Создание нового экземпляра Word
Первый шаг в процессе создания документа Word из Excel требует внесения некоторых изменений в доступные ссылки. Чтобы быть конкретным, мы должны установить ссылку на библиотеку объектов Word в редакторе VBA. Без этого шага Excel вообще не сможет взаимодействовать с Word, не говоря уже о создании документов и абзацев.
В этом рецепте мы будем создавать новый экземпляр Word из Excel.
Подготовка
Откройте Excel и активируйте новую книгу. Сохраните файл как файл с поддержкой макросов (*.xlsm) на рабочем столе и назовите его Word_Interaction.xlsm. Лист1 должен быть активен. Нажмите Alt + F11, чтобы переключиться в редактор VBA, а затем вставьте новый модуль.
Само собой разумеется, что MS Word также должен быть установлен на вашем компьютере, чтобы инструкции этого рецепта работали эффективно.
Как это сделать…
Вот как связать Word с Excel:
<р>1. В редакторе VBA щелкните Инструменты | Использованная литература. Откроется диалоговое окно «Ссылки — VBAProject»:Рисунок 1. Диалоговое окно «Ссылки — VBAProject»
<р>2. Прокрутите список доступных ссылок, пока не найдете библиотеку объектов Microsoft Word 16.0. Более ранние версии Word будут иметь другой номер, но по-прежнему будут ссылаться на библиотеку объектов Word:Рисунок 2. Выбрана библиотека объектов Microsoft Word 16.0
<р>3. После выбора нажмите OK, чтобы сохранить выбор и закрыть диалоговое окно.Примечание. Ссылка на библиотеку объектов Word действительна только для книги Excel, в которой вы сейчас работаете. Каждая новая книга должна быть точно так же привязана к Word.
<р>4. Создайте процедуру Sub для запуска Word из Excel. Есть несколько способов сделать это, но для этого рецепта мы будем использовать эту конкретную технику: <р>5. Нажмите F5, чтобы запустить процедуру или протестировать ее, если хотите. На вашем экране появится новый экземпляр Word. Закройте приложение Word, когда убедитесь, что процедура Sub работает. <р>6. Открытие Word без открытия нового документа не очень удобно. Добавьте следующие строки кода в процедуру Sub, чтобы открыть новый документ:Примечание. Поскольку нам нужно использовать ключевое слово Word.Application каждый раз, когда мы обращаемся к MS Word, структура цикла упрощает обращение к Word.Application через переменную wdApp.
- Если вы сейчас запустите процедуру, Word снова откроется, на этот раз отобразив новый документ Document1.
- Закройте Word, но не сохраняйте документ. Вернитесь в редактор VBA в Excel.
Эти шаги позволят вам создать новый экземпляр Word из Excel, используя VBA для Excel.
Как это работает…
Включение библиотеки объектов Microsoft Word для этой книги Excel позволило использовать ключевые слова и методы Word в Excel. Эти ключевые слова могут открыть экземпляр Word, а также новый документ Word из Excel.
Написание и форматирование текста
Очень хорошо знать, как открыть Word с новым доступным документом. Однако нам нужно больше, чем это. Заголовок для нового документа был бы хорошим началом, но этого еще недостаточно. Форматирование заголовка также необходимо, и оно профессионально округлит его.
В этом рецепте мы будем писать и форматировать текст.
Подготовка
Убедитесь, что файл Word_Interaction.xlsm все еще открыт и что редактор VBA активен.
Как это сделать…
Вот шаги для ввода и форматирования текста в Word:
<р>1. Чтобы добавить текст в документ Word через Excel, добавьте следующую строку кода: <р>2. Нажмите F5. Запуск процедуры Sub теперь приведет к созданию нового экземпляра Word с новым открытым документом и строкой текста в процедуре Sub в верхней части страницы. Закройте Word без сохранения, так как в нашу процедуру в Excel нужно добавить еще код:Рисунок 3. Новый экземпляр Word с документом и текстом
<р>3. Совершенно очевидно, что нам нужно сделать некоторое форматирование здесь. Запустив структуру вложенного цикла, мы избавим нас от повторения ключевых слов. Кроме того, если вы еще этого не сделали, вы можете использовать IntelliSense, чтобы помочь вам со всеми ключевыми словами Word. Добавьте следующие строки кода в редактор VBA: <р>4. Когда вы сейчас запустите процедуру Sub, внешний вид заметно улучшится:Рисунок 4. Форматирование, выполненное с помощью VBA в Excel
Используя эти принципы, пользователи смогут форматировать документ Word с кодированием VBA в Excel.
Копирование данных в Word
Мы могли бы открыть Word вручную и добиться того, что только что сделали, но вся цель упражнения состоит в том, чтобы сделать это из Excel, чтобы данные электронной таблицы можно было автоматически записать в документ Word.
Теперь нам нужно выбрать данные, скопировать их, а затем вставить в процессе открытия и форматирования.
В этом рецепте мы будем копировать данные в Word.
Подготовка
Убедитесь, что файл Word_Interaction.xlsm все еще открыт. Активируйте Sheet1 и введите следующие данные:
Рисунок 5. Рабочие данные
Как это сделать…
Выполните следующие действия, чтобы скопировать текст из Excel в Word:
<р>1. Создайте код для автоматического выбора любого диапазона на листе: <р>2. Запустите процедуру Sub, чтобы проверить свой код. Мы знаем, что первая часть будет работать, но в этом случае нам нужно посмотреть, были ли данные в нашей электронной таблице скопированы в Word:Рисунок 6. Данные Excel скопированы и вставлены в Word
<р>3. Сохранение документа Word — это то, что нам нужно сделать дальше. При добавлении этих строк кода обратите внимание на изменения в операторе With: <р>4. Последнее, что нам нужно сделать, это закрыть документ и, наконец, сам Word. Просто добавьте следующие две строки в новую строку после имени файла: <р>5. Когда вы запустите процедуру сейчас, вы увидите, что Word ненадолго откроется и сразу же снова закроется. Если вы хотите устранить это, просто закомментируйте следующие две строки: <р>6. Мы еще не закончили, потому что каждый раз, когда мы запускаем процедуру, файл заменяется, не давая нам возможности сохранить его под новым именем. Нам нужно добавить код для создания уникального имени файла каждый раз, когда мы запускаем процедуру. Объявив новую переменную SaveAsName, а затем назначив отформатированную версию функции Now, мы можем создать уникальное имя для файла при каждом его сохранении. Добавьте эти две строки после .Selection.Paste: <р>7. Каждый раз, когда вы запускаете процедуру сейчас, будет сохраняться новый файл с уникальным именем. Следуя этим инструкциям, вы сможете автоматически копировать данные из Excel в Word.Как это работает…
Вот объяснение того, что мы сделали.
Выбор данных в Excel — не новая концепция, как и копирование. Сохранение его в документе Word с помощью Excel VBA требует использования функции Environ, а также форматирования имени файла. Это обеспечит создание нового файла при каждом выполнении процедуры Excel VBA.
Использование шаблонов и закладок
Не имеет смысла копировать всю электронную таблицу Excel и вставлять ее в Word. Вы могли бы сделать все в Word с самого начала, избавив вас от необходимости копировать из Excel и вставлять в Word.
Дело в том, что если у вас есть существующий документ Word или даже шаблон Word, и вам регулярно нужно экспортировать выбранную информацию из электронной таблицы в Excel в этот шаблон, это способ сделать это. Слово «автоматизация» приобретает новый смысл, если таким образом удается связать Excel с Word.
В этом рецепте мы будем вставлять данные Excel в документ Word по определенной закладке.
Подготовка
Убедитесь, что файл Word_Interaction.xlsm все еще открыт, а редактор VBA активен.
Как это сделать…
Нам нужно сделать следующее:
<р>1. Откройте документ Word, сохраненный на рабочем столе. Удалите вставленную таблицу (выделите только всю таблицу — без строк до или после, щелкните контекстную вкладку «Макет», а затем «Строки и столбцы | Удалить | Удалить таблицу») <р>2. Введите короткое предложение Последняя информация о сотрудниках в открытом пространстве. <р>3. Вставьте закладку в первую открытую строку после этого предложения. Щелкните Вставить | Закладка. Появится диалоговое окно Закладка. Введите имя в текстовом поле Имя закладки, а затем нажмите Добавить, чтобы закрыть диалоговое окно:Рисунок 7. Название закладки
<р>4. Щелкните Файл | Сохранить как и сохраните файл как шаблон Word. Расширение файла .dotx. Вызовите файл EmployeeReportTemplate. <р>5. В зависимости от операционной системы и версии MS Office на вашем ПК файл будет сохранен в определенной папке, предназначенной для файлов шаблонов:Рисунок 8. Папка для файлов шаблонов
<р>6. Закройте файл и вернитесь в редактор VBA в Excel. <р>7.Добавьте следующую строку текста в окно кода, чтобы открыть конкретный файл, а не только пустой документ: <р>8. Поскольку мы используем шаблон, нам не нужно форматирование, которое мы сделали для предыдущего документа. Удалите следующие строки кода: <р>9. Используйте метод GoTo, чтобы точно указать Word, куда следует вставить скопированные данные из Excel. Вот почему мы создали закладку в шаблоне Word. Окончательный код всей процедуры должен выглядеть так:Эти инструкции позволят вам создать шаблон в Word, а затем автоматически поместить содержимое из Excel в документ Word в определенные закладки.
Вставить данные Excel в шаблон Word можно с помощью Excel VBA. Вставка закладки в шаблон Word позволяет Excel отправлять данные в определенную точку вставки для вставки данных.
См. также
Чтобы прочитать более подробное руководство, ознакомьтесь с нашей книгой VBA Automation for Excel Cookbook, автором которой является Майк Ван Никерк.
от Packt @ packt. Мы являемся одним из ведущих издателей технических книг в Великобритании. Мы опубликовали более 7 000 книг, видео, статей и руководств.
Читайте также: