Word vba сохранить как
Перейти к содержимому

Word vba сохранить как

  • автор:

Работа с Word — Создание, открытие, форматирование, закрытие и сохранение

Использование Word в приложениях на Visual Basic 6 открывает широчайшие возможности для создания профессионально оформленных документов (например отчетов). Это часто необходимо при работе в фирме или на предприятии для обеспечения документооборота. Основным преимуществом использования Wordа в этом случае является то, что практически на всех компьютерах, используемых в фирмах и на предприятиях установлены Windows и пакет Microsoft Office. Поэтому подготовленные документы Word не требуют каких-либо дополнительных усилий для их просмотра, печати и редактирования. Единственное что нужно помнить, это то что работа через автоматизацию OLE (связывание и внедрение объектов) на деле оказывается довольно медленной технологией, хотя и очень полезной.

Чтобы использовать объекты Word в Visual Basic , необходимо инсталлировать сам Word. После этого вы получаете в своё распоряжение библиотеку Microsoft Word Object Library, которую нужно подключить к текущему проекту через диалоговое окно «Разработать»>>»Ссылки» (References) и указать Microsoft Word 9.0 Object Library (для Word 2000).

Два самых важных объекта Word это Word.Application и Word.Document. Они обеспечивают доступ к экземпляру приложения и документам Word.

Поэтому в раздел Generals «Общее» формы введите следующий код для объявления объектных переменных приложения Word и документа Word.

Чтобы создать новый экземпляр Word, введите такой код кнопки;

Для форматирования печатной области документа используйте данный код:

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

  • CentimetersToPoints(Х.ХХ) — переводит сантиметры в пункты.
  • MillimetersToPoints(X.XX) — переводит миллиметры в пункты

Небольшое отступление.

Для того чтобы в своём приложении не писать постоянно одно и тоже имя объекта, можно использовать оператор With.

Например код находящейся выше можно переписать так:

Если вам необходимо создать документ Word с нестандартным размером листа, то используйте данный код:

Данный код меняет ориентацию страницы (практически меняет местами значения ширины и высоты листа):

  • wdOrientLandscape — альбомная ориентация ( число 1)
  • wdOrientPortrait — книжная ориентация ( число 0)

Для сохранения документа под новым именем и в определенное место используйте данный код код:

После такого сохранения вы можете про ходу работы с документом сохранять его.

Или проверить, были ли сохранены внесенные изменения свойством Saved и если изменения не были сохранены — сохранить их;

Завершив работу с документом, вы можете закрыть сам документ методом Close и сам Word методом Quit.

Если в методах Close и Quit не использовать необязательный параметр True то Word запросит согласие пользователя (если документ не был перед этим сохранён) на закрытие документа.

Если вам необходимо оставить Word открытым, просто не используйте методы Close и Quit.

Word VBA Macros – SaveAs (PDF or New File Name)

This Word macro will save the ActiveDocument with a new file name that includes the current time:

Create and SaveAs

This VBA macro will create a new document and save as using the current date and time:

SaveAs PDF

This macro will save the Word document as a PDF:

This function will also Save any word document as a PDF:

You can enter the file path and file name to indicate which file to save as a PDF:

SaveAs Method

Saves the specified document with a new name or format. Some of the arguments for this method correspond to the options in the Save As dialog box (File menu).

expression.SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks)

expression Required. An expression that returns a Document object.

FileName Optional Variant. The name for the document. The default is the current folder and file name. If the document has never been saved, the default name is used (for example, Doc1.doc). If a document with the specified file name already exists, the document is overwritten without the user being prompted first.

FileFormat Optional Variant. The format in which the document is saved. Can be any WdSaveFormat constant. To save a document in another format, specify the appropriate value for the SaveFormat property of the FileConverter object.

WdSaveFormat can be one of these WdSaveFormat constants.
wdFormatDocument Saves as a Microsoft Word document. Default.
wdFormatDOSText Saves text without formatting. Converts all section breaks, page breaks, and new line characters to paragraph marks. Uses the ANSI character set. Use this format to share documents between Word and DOS-based programs.
wdFormatDOSTextLineBreaks Saves text without formatting. Converts all line breaks, section breaks, and page breaks to paragraph marks. Use this format when you want to maintain line breaks, for example, when transferring documents to an electronic mail system.
wdFormatEncodedText Saves as an encoded text file. Use the Encoding argument to specify the code page to use.
wdFormatFilteredHTML Saves text with HTML tags with minimal cascading style sheet formatting. The resulting document can be viewed in a Web browser.
wdFormatHTML Saves all text and formatting with HTML tags so that the resulting document can be viewed in a Web browser.
wdFormatRTF Saves all formatting. Converts formatting to instructions that other programs, including compatible Microsoft programs, can read and interpret.
wdFormatTemplate Saves as a Word template.
wdFormatText Saves text without formatting. Converts all section breaks, page breaks, and new line characters to paragraph marks. Uses the ANSI character set. Use this format if the destination program cannot read any of the other available file formats.
wdFormatTextLineBreaks Saves text without formatting. Converts all line breaks, section breaks, and page breaks to paragraph marks. Use this format when you want to maintain line breaks, for example, when transferring documents to an electronic mail system.
wdFormatUnicodeText Saves as a Unicode text file. Converts text between common character encoding standards, including Unicode 2.0, Mac OS, Windows, EUC and ISO-8859 series.
wdFormatWebArchive Saves the text, images, and formatting as a single-file Web page.
wdFormatXML Saves text and formatting using Extensible Markup Language (XML) and the Word XML schema.
Other File Types To save in a file type for which there isn’t a constant, use the FileConverters object to obtain the SaveFormat property; then set the FileFormat argument to the value of the SaveFormat property.

LockComments Optional Variant. True to lock the document for comments. The default is False.

Password Optional Variant. A password string for opening the document. (See Remarks below.)

AddToRecentFiles Optional Variant. True to add the document to the list of recently used files on the File menu. The default is True.

WritePassword Optional Variant. A password string for saving changes to the document. (See Remarks below.)

ReadOnlyRecommended Optional Variant. True to have Microsoft Word suggest read-only status whenever the document is opened. The default is False.

EmbedTrueTypeFonts Optional Variant. True to save TrueType fonts with the document. If omitted, the EmbedTrueTypeFonts argument assumes the value of the EmbedTrueTypeFonts property.

SaveNativePictureFormat Optional Variant. If graphics were imported from another platform (for example, Macintosh), True to save only the Windows version of the imported graphics.

SaveFormsData Optional Variant. True to save the data entered by a user in a form as a data record.

SaveAsAOCELetter Optional Variant. If the document has an attached mailer, True to save the document as an AOCE letter (the mailer is saved).

Encoding Optional MsoEncoding. The code page, or character set, to use for documents saved as encoded text files. The default is the system code page.

MsoEncoding can be one of these MsoEncoding constants.
msoEncodingArabic
msoEncodingArabicASMO
msoEncodingArabicAutoDetect Not used with this method.
msoEncodingArabicTransparentASMO
msoEncodingAutoDetect Not used with this method.
msoEncodingBaltic
msoEncodingCentralEuropean
msoEncodingCyrillic
msoEncodingCyrillicAutoDetect Not used with this method.
msoEncodingEBCDICArabic
msoEncodingEBCDICDenmarkNorway
msoEncodingEBCDICFinlandSweden
msoEncodingEBCDICFrance
msoEncodingEBCDICGermany
msoEncodingEBCDICGreek
msoEncodingEBCDICGreekModern
msoEncodingEBCDICHebrew
msoEncodingEBCDICIcelandic
msoEncodingEBCDICInternational
msoEncodingEBCDICItaly
msoEncodingEBCDICJapaneseKatakanaExtended
msoEncodingEBCDICJapaneseKatakanaExtendedAndJapanese
msoEncodingEBCDICJapaneseLatinExtendedAndJapanese
msoEncodingEBCDICKoreanExtended
msoEncodingEBCDICKoreanExtendedAndKorean
msoEncodingEBCDICLatinAmericaSpain
msoEncodingEBCDICMultilingualROECELatin2
msoEncodingEBCDICRussian
msoEncodingEBCDICSerbianBulgarian
msoEncodingEBCDICSimplifiedChineseExtendedAndSimplifiedChinese
msoEncodingEBCDICThai
msoEncodingEBCDICTurkish
msoEncodingEBCDICTurkishLatin5
msoEncodingEBCDICUnitedKingdom
msoEncodingEBCDICUSCanada
msoEncodingEBCDICUSCanadaAndJapanese
msoEncodingEBCDICUSCanadaAndTraditionalChinese
msoEncodingEUCChineseSimplifiedChinese
msoEncodingEUCJapanese
msoEncodingEUCKorean
msoEncodingEUCTaiwaneseTraditionalChinese
msoEncodingEuropa3
msoEncodingExtAlphaLowercase
msoEncodingGreek
msoEncodingGreekAutoDetect Not used with this method.
msoEncodingHebrew
msoEncodingHZGBSimplifiedChinese
msoEncodingIA5German
msoEncodingIA5IRV
msoEncodingIA5Norwegian
msoEncodingIA5Swedish
msoEncodingISO2022CNSimplifiedChinese
msoEncodingISO2022CNTraditionalChinese
msoEncodingISO2022JPJISX02011989
msoEncodingISO2022JPJISX02021984
msoEncodingISO2022JPNoHalfwidthKatakana
msoEncodingISO2022KR
msoEncodingISO6937NonSpacingAccent
msoEncodingISO885915Latin9
msoEncodingISO88591Latin1
msoEncodingISO88592CentralEurope
msoEncodingISO88593Latin3
msoEncodingISO88594Baltic
msoEncodingISO88595Cyrillic
msoEncodingISO88596Arabic
msoEncodingISO88597Greek
msoEncodingISO88598Hebrew
msoEncodingISO88599Turkish
msoEncodingJapaneseAutoDetect Not used with this method.
msoEncodingJapaneseShiftJIS
msoEncodingKOI8R
msoEncodingKOI8U
msoEncodingKorean
msoEncodingKoreanAutoDetect Not used with this method.
msoEncodingKoreanJohab
msoEncodingMacArabic
msoEncodingMacCroatia
msoEncodingMacCyrillic
msoEncodingMacGreek1
msoEncodingMacHebrew
msoEncodingMacIcelandic
msoEncodingMacJapanese
msoEncodingMacKorean
msoEncodingMacLatin2
msoEncodingMacRoman
msoEncodingMacRomania
msoEncodingMacSimplifiedChineseGB2312
msoEncodingMacTraditionalChineseBig5
msoEncodingMacTurkish
msoEncodingMacUkraine
msoEncodingOEMArabic
msoEncodingOEMBaltic
msoEncodingOEMCanadianFrench
msoEncodingOEMCyrillic
msoEncodingOEMCyrillicII
msoEncodingOEMGreek437G
msoEncodingOEMHebrew
msoEncodingOEMIcelandic
msoEncodingOEMModernGreek
msoEncodingOEMMultilingualLatinI
msoEncodingOEMMultilingualLatinII
msoEncodingOEMNordic
msoEncodingOEMPortuguese
msoEncodingOEMTurkish
msoEncodingOEMUnitedStates
msoEncodingSimplifiedChineseAutoDetect Not used with this method.
msoEncodingSimplifiedChineseGBK
msoEncodingT61
msoEncodingTaiwanCNS
msoEncodingTaiwanEten
msoEncodingTaiwanIBM5550
msoEncodingTaiwanTCA
msoEncodingTaiwanTeleText
msoEncodingTaiwanWang
msoEncodingThai
msoEncodingTraditionalChineseAutoDetect Not used with this method.
msoEncodingTraditionalChineseBig5
msoEncodingTurkish
msoEncodingUnicodeBigEndian
msoEncodingUnicodeLittleEndian
msoEncodingUSASCII
msoEncodingUTF7
msoEncodingUTF8
msoEncodingVietnamese
msoEncodingWestern

InsertLineBreaks Optional Variant. If the document is saved as a text file, True to insert line breaks at the end of each line of text.

AllowSubstitutions Optional Variant. If the document is saved as a text file, True allows Word to replace some symbols with text that looks similar. For example, displaying the copyright symbol as (c). The default is False.

LineEnding Optional Variant. The way Word marks the line and paragraph breaks in documents saved as text files. Can be any WdLineEndingType constant.

WdLineEndingType can be one of these WdLineEndingType constants.
wdCRLF Default.
wdCROnly
wdLFCR Not used with this method.
wdLFOnly Not used with this method.
wdLSPS Not used with this method.

AddBiDiMarks Optional Variant. True adds control characters to the output file to preserve bi-directional layout of the text in the original document.

Remarks

Security Avoid using hard-coded passwords in your applications. If a password is required in a procedure, request the password from the user, store it in a variable, and then use the variable in your code. For recommended best practices on how to do this, see Security Notes for Microsoft Office Solution Developers.

Example

This example saves the active document as Test.rtf in rich-text format (RTF).

This example saves the active document in text-file format with the file extension «.txt».

This example loops through all the installed converters, and if it finds the WordPerfect 6.0 converter, it saves the active document using the converter.

This example illustrates a procedure that saves a document with a password.

Сохранение документов

Сохранять и закрывать документы можно несколькими способами — в зависимости от того, какого результата вы хотите добиться. Для сохранения и закрытия документа вы вызываете методы Save и Close соответственно. Они дают разные результаты в зависимости от того, как именно вы их используете. Если они применяются к объекту Document, их действие распространяется только на соответствущий документ. А если они применяются к набору Documents — на все открытые документы.

Сохранение всех документов Метод Save сохраняет изменения во всех открытых документах, когда применяется к объекту Documents. При этом у вас есть два варианта. Если вы просто вызываете Save набора Documents, пользователю выводится запрос на сохранение всех файлов.

5.Object noPrompt = Type.Missing;

6.Object originalFormat = Type.Missing;

8.ThisApplication.Documents.Save(ref noPrompt, ref originalFormat);

Следующий код устанавливает параметр NoPrompt в True и сохраняет все открытые документы без участия пользователя.

5.Object noPrompt = true;

6.Object originalFormat = Type.Missing;

7.ThisApplication.Documents.Save(ref noPrompt, ref originalFormat);

Совет По умолчанию NoPrompt равен False, поэтому, если вы вызываете Save без NoPrompt в Visual Basic .NET и с указанием вместо него Type.Missing в C#, пользователю выводится запрос на сохранение.

Сохранение единственного документа Метод Save сохраняет изменения в заданном объекте Document. Следующий фрагмент кода показывает два варианта сохранения активного документа:

01.’ Visual Basic

02.’ Сохраняем активный документ так…

09.// Сохраняем активный документ так…

Если вы не знаете точно, активен ли сохраняемый вами документ, ссылайтесь на него по имени. Например:

5.Object file = «MyNewDocument.doc»;

Совет Хотя разработчики на Visual Basic .NET могут получать элементы различных наборов, используя стандартный синтаксис Visual Basic (вызывая свойство Item или пропуская этот необязательный вызови предоставляя индекс или имя), разработчики на C# этого делать, как правило, не могут. Обычно они должны вызывать скрытый метод get_Item с передачей индекса или имени по ссылке, как в предыдущем примере. Разработчики на C# могут обращаться напрямую лишь к элементам массивов (как в массиве Dialogs, уже показанном в одном из примеров).

Альтернативный синтаксис — использование индекса документа, но он ненадежен по двум причинам. Во-первых, нет уверенности, что индекс вашего документа не изменится, а во-вторых, если документ, на который вы ссылаетесь, еще ни разу не сохранялся, появится диалоговое окно Save As. Следующий код сохраняет первый документ в наборе Documents:

5.Object file = 1;

SaveAs Метод SaveAs позволяет сохранить документ под другим именем файла. Он требует передачи лишь нового имени файла, а остальные аргументы необязательны. Следующая процедура сохраняет документ в соответствии с «зашитым» в код путем и именем файла. Если файл с таким именем в данной папке уже есть, он «молча» перезаписывается. (Заметьте, что метод SaveAs принимает несколько необязательных параметров, о каждом из которых нужно позаботиться, если вы используете C#.)

01.’ Visual Basic

02.’ Сохраняем документ. В реальном приложении следует проверять

03.’ наличие одноименного файла. В данном случае любой

04.’ ранее существовавший документ просто перезаписывается.

08.// Сохраняем документ. В реальном приложении следует проверять

09.// наличие одноименного файла. В данном случае любой

10.// ранее существовавший документ просто перезаписывается.

11.Object fileName = @»C:\Test\MyNewDocument.doc»;

12.Object fileFormat = Type.Missing;

13.Object lockComments = Type.Missing;

14.Object password = Type.Missing;

15.Object addToRecentFiles = Type.Missing;

16.Object writePassword = Type.Missing;

17.Object readOnlyRecommended = Type.Missing;

18.Object embedTrueTypeFonts = Type.Missing;

19.Object saveNativePictureFormat = Type.Missing;

20.Object saveFormsData = Type.Missing;

21.Object saveAsAOCELetter = Type.Missing;

22.Object encoding = Type.Missing;

23.Object insertLineBreaks = Type.Missing;

24.Object allowSubstitutions = Type.Missing;

25.Object lineEnding = Type.Missing;

26.Object addBiDiMarks = Type.Missing;

28.ThisDocument.SaveAs(ref fileName, ref fileFormat, ref lockComments,

29. ref password, ref addToRecentFiles, ref writePassword,

30. ref readOnlyRecommended, ref embedTrueTypeFonts,

31. ref saveNativePictureFormat, ref saveFormsData,

32. ref saveAsAOCELetter, ref encoding, ref insertLineBreaks,

33. ref allowSubstitutions, ref lineEnding, ref addBiDiMarks);

Закрытие документов

Метод Close позволяет не только закрывать документы, но и сохранять их. Вы можете закрывать документы индивидуально или все сразу.

Закрытие всех документов Применительно к набору Documents метод Close работает аналогично методу Save. При вызове без аргументов он предлагает пользователю сохранить изменения в любых несохраненных документах.

01.’ Visual Basic

05.Object saveChanges = Type.Missing;

06.Object originalFormat = Type.Missing;

07.Object routeDocument = Type.Missing;

09. ref originalFormat, ref routeDocument);

Как и Save, метод Close принимает необязательный аргумент SaveChanges, у которого есть перечислимое WdSaveOptions с тремя значениями: wdDoNotSaveChanges, wdPromptToSaveChanges и wdSaveChanges. В следующем примере показано, как закрыть все открытые документы с автоматическим сохранением или отбрасыванием изменений:

01.’ Visual Basic

02.’ Закрываем все документы с автоматическим сохранением

06.’ Закрываем все документы с автоматическим отбрасыванием изменений

11.// Закрываем все документы с автоматическим сохранением

12.Object saveChanges = Word.WdSaveOptions.wdSaveChanges;

13.Object originalFormat = Type.Missing;

14.Object routeDocument = Type.Missing;

16. ref originalFormat, ref routeDocument);

18.// Закрываем все документы с автоматическим отбрасыванием изменений

19.Object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;

20.Object originalFormat = Type.Missing;

21.Object routeDocument = Type.Missing;

23. ref originalFormat, ref routeDocument);

Примечание Вызов метода Application.Quit закрывает Word. Но закрытие всех открытых документов не приводит к закрытию Word — он может быть завершен только явным образом.

Закрытие единственного документа Фрагменты кода, приведенные ниже, иллюстрируют, как закрыть активный документ без сохранения изменений и как закрыть документ MyNewDocument, автоматически сохранив изменения:

01.’ Visual Basic

02.’ Закрываем активный документ без сохранения изменений

06.’ Закрываем MyNewDocument и «молча» сохраняем изменения

11.// Закрываем активный документ без сохранения изменений

12.Object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;

13.Object originalFormat = Type.Missing;

14.Object routeDocument = Type.Missing;

16. ref originalFormat, ref routeDocument);

18.// Закрываем MyNewDocument и «молча» сохраняем изменения

19.Object name = «MyNewDocument.doc»;

24.Word.Document doc = ThisApplication.Documents.get_Item(ref name);

26. ref originalFormat, ref routeDocument);

Перечисление набора Documents

В большинстве случае вы работаете с индивидуальными документами, и потребности в перечислении всего набора Documents не возникает. Но бывают ситуации, в которых нужно проверять каждый открытый документ и в зависимости от результатов проверки выполнять некую операцию. В таких ситуациях вы можете использовать цикл For Each (в Visual Basic .NET) или foreach (в C#) для перебора всех документов. Внутри этого цикла вы выполняете операции над файлами, если соблюдается какое-то условие или условия. В данном примере код перебирает все открытые документы и, если документ еще не сохранен, сохраняет его.

Вот что делает код в процедуре-примере:

перебирает набор открытых документов;

проверяет значение свойства Saved каждого документа и сохраняет документ, если он еще не сохранен;

получает имя каждого сохраненного документа;

отображает имя каждого сохраненного документа в MessageBox или выводит сообщение о том, что сохранять какие-либо документы не требуется.

01.’ Visual Basic

02.Public Sub SaveUnsavedDocuments()

03. ‘ Перечисляем набор Documents

04. Dim str As String

05. Dim doc As Word.Document

06. Dim sw As New StringWriter

08. For Each doc In ThisApplication.Documents

09. If Not doc.Saved Then

10. ‘ Сохраняем документ

16. str = sw.ToString()

17. If str = String.Empty Then

18. str = «No documents need saving.»

20. MessageBox.Show(str, «SaveUnsavedDocuments»)

24.public void SaveUnsavedDocuments()

26. // Перечисляем набор Documents

28. StringWriter sw = new StringWriter();

30. foreach (Word.Document doc in ThisApplication.Documents)

34. // Сохраняем документ

40. str = sw.ToString();

41. if ( str == string.Empty )

43. str = «No documents need saving.»;

45. MessageBox.Show(str, «SaveUnsavedDocuments»);

Word предоставляет богатую объектную модель, которая позволяет программно контролировать Word и создание документов из управляемого кода. Информации, полученной вами, вполне достаточно для решения любой задачи, связанной с созданием документов и их редактированием.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *