Vba saveas для word

Show All

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).

    Sub SaveAsRTF()
    ActiveDocument.SaveAs FileName:="Text.rtf", _
        FileFormat:=wdFormatRTF
End Sub
  

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

    Sub SaveAsTextFile()
    Dim strDocName As String
    Dim intPos As Integer

    'Find position of extension in filename
    strDocName = ActiveDocument.Name
    intPos = InStrRev(strDocName, ".")

    If intPos = 0 Then

        'If the document has not yet been saved
        'Ask the user to provide a filename
        strDocName = InputBox("Please enter the name " & _
            "of your document.")
    Else

        'Strip off extension and add ".txt" extension
        strDocName = Left(strDocName, intPos - 1)
        strDocName = strDocName & ".txt"
    End If

    'Save file with new extension
    ActiveDocument.SaveAs FileName:=strDocName, _
        FileFormat:=wdFormatText
End Sub
  

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.

    Sub SaveWithConverter()

    Dim cnvWrdPrf As FileConverter

    'Look for WordPerfect file converter
    'And save document using the converter
    'For the FileFormat converter value
    For Each cnvWrdPrf In Application.FileConverters
        If cnvWrdPrf.ClassName = "WrdPrfctWin" Then
            ActiveDocument.SaveAs FileName:="MyWP.doc", _
                FileFormat:=cnvWrdPrf.SaveFormat
        End If
    Next cnvWrdPrf

End Sub
  

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

    Sub SaveWithPassword(docCurrent As Document, strPWD As String)
    With docCurrent
        .SaveAs WritePassword:=strPWD
    End With
End Sub
  

SaveAs

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

Sub SaveMewithDateName()
'saves active doc in current folder as a filtered html and named upon current time
    Dim strTime As String
    strTime = Format(Now, "hh-mm")
    ActiveDocument.SaveAs FileName:=ActiveDocument.Path & "" & strTime, FileFormat:=wdFormatFilteredHTML
End Sub

Create and SaveAs

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

Sub CreateAndSaveAs()
'creates a new doc and saves as a filtered html [In the default folder and named upon current time]
    Dim strTime As String
    Dim strPath As String
    Dim oDoc As Document
    
    strPath = ActiveDocument.Path & Application.PathSeparator
     strTime = Format(Now, "yyyy-mm-dd hh-mm")
    Set oDoc = Documents.Add 'create a new doc and asign it to oDoc variable
    'write some text in the new doc  reffering to it using oDoc variable
    oDoc.Range.InsertBefore "Visit https://www.automateexcel.com/vba-code-library"
    oDoc.SaveAs FileName:=strPath & strTime, FileFormat:=wdFormatFilteredHTML
    oDoc.Close wdDoNotSaveChanges 'close doc
End Sub

SaveAs PDF

This macro will save the Word document as a PDF:

Sub MacroSaveAsPDF()
'macro saves pdf either in the same folder where active doc is or in documents folder if file is not yet saved
'
    Dim strPath As String
    Dim strPDFname As String

    strPDFname = InputBox("Enter name for PDF", "File Name", "example")
    If strPDFname = "" Then 'user deleted text from inputbox, add default name
        strPDFname = "example"
    End If
    strPath = ActiveDocument.Path
    If strPath = "" Then    'doc is not saved yet
        strPath = Options.DefaultFilePath(wdDocumentsPath) & Application.PathSeparator
    Else
        'just add  at the end
        strPath = strPath & Application.PathSeparator
    End If
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
                                       strPath & strPDFname & ".pdf", _
                                       ExportFormat:=wdExportFormatPDF, _
                                       OpenAfterExport:=False, _
                                       OptimizeFor:=wdExportOptimizeForPrint, _
                                       Range:=wdExportAllDocument, _
                                       IncludeDocProps:=True, _
                                       CreateBookmarks:=wdExportCreateWordBookmarks, _
                                       BitmapMissingFonts:=True
End Sub

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

Sub MacroSaveAsPDFwParameters(Optional strPath As String, Optional strFilename As String)

'strPath, if passed, must include path separator [""]

    If strFilename = "" Then
        strFilename = ActiveDocument.Name
    End If
    'extract just file name without extension
    If InStr(1, strFilename, ".") > 0 Then
        strFilename = Left$(strFilename, InStrRev(strFilename, ".") - 1)
    End If


    If strPath = "" Then
        If ActiveDocument.Path = "" Then    'doc is not saved yet, we will use default path
            strPath = Options.DefaultFilePath(wdDocumentsPath) & Application.PathSeparator
        Else    ' use path of active doc
            strPath = Options.DefaultFilePath(wdDocumentsPath) & Application.PathSeparator
        End If
    End If
    On Error GoTo EXITHERE
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
                                       strPath & strFilename & ".pdf", _
                                       ExportFormat:=wdExportFormatPDF, _
                                       OpenAfterExport:=False, _
                                       OptimizeFor:=wdExportOptimizeForPrint, _
                                       Range:=wdExportAllDocument, _
                                       IncludeDocProps:=True, _
                                       CreateBookmarks:=wdExportCreateWordBookmarks, _
                                       BitmapMissingFonts:=True
    Exit Sub

EXITHERE:
    MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub

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

Sub CallSaveAsPDF()

    Call MacroSaveAsPDFwParameters("c:/Documents", "example.docx")
    
End Sub
title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Document.SaveAs2 method (Word)

vbawd10.chm158007864

vbawd10.chm158007864

word

Word.SaveAs2

aa491007-0e31-26f5-3a5e-477381529b6e

06/08/2017

medium

Document.SaveAs2 method (Word)

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 tab).

Syntax

expression. SaveAs2( _FileName_ , _FileFormat_ , _LockComments_ , _Password_ , _AddToRecentFiles_ , _WritePassword_ , _ReadOnlyRecommended_ , _EmbedTrueTypeFonts_ , _SaveNativePictureFormat_ , _SaveFormsData_ , _SaveAsAOCELetter_ , _Encoding_ , _InsertLineBreaks_ , _AllowSubstitutions_ , _LineEnding_ , _AddBiDiMarks_ , _CompatibilityMode_ )

expression An expression that returns a Document object.

Parameters

Name Required/Optional Data type Description
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 prompting the user.
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.
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 Microsoft Windows version of the imported graphics.
SaveFormsData Optional Variant True to save the data entered by a user in a form as a 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 Variant The code page, or character set, to use for documents saved as encoded text files. The default is the system code page. You cannot use all MsoEncoding constants with this parameter.
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 one of the following WdLineEndingType constants: wdCRLF (default) or wdCROnly.
AddBiDiMarks Optional Variant True adds control characters to the output file to preserve bi-directional layout of the text in the original document.
CompatibilityMode Optional Variant The compatibility mode that Word uses when opening the document. WdCompatibilityMode constant.

Important
By default, if no value is specified for this parameter, Word enters a value of 0, which specifies that the current compatibility mode of the document should be retained.

Return value

Nothing

Example

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

Sub SaveAsRTF() 
    ActiveDocument.SaveAs2 FileName:="Text.rtf", _ 
        FileFormat:=wdFormatRTF 
End Sub

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

Sub SaveAsTextFile() 
    Dim strDocName As String 
    Dim intPos As Integer 
 
    ' Find position of extension in file name 
    strDocName = ActiveDocument.Name 
    intPos = InStrRev(strDocName, ".") 
 
    If intPos = 0 Then 
 
        ' If the document has not yet been saved 
        ' Ask the user to provide a file name 
        strDocName = InputBox("Please enter the name " & _ 
            "of your document.") 
    Else 
 
        ' Strip off extension and add ".txt" extension 
        strDocName = Left(strDocName, intPos - 1) 
        strDocName = strDocName & ".txt" 
    End If 
 
    ' Save file with new extension 
    ActiveDocument.SaveAs2 FileName:=strDocName, _ 
        FileFormat:=wdFormatText 
End Sub

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

Sub SaveWithConverter() 
 
    Dim cnvWrdPrf As FileConverter 
 
    ' Look for WordPerfect file converter 
    ' And save document using the converter 
    ' For the FileFormat converter value 
    For Each cnvWrdPrf In Application.FileConverters 
        If cnvWrdPrf.ClassName = "WrdPrfctWin" Then 
            ActiveDocument.SaveAs2 FileName:="MyWP.doc", _ 
                FileFormat:=cnvWrdPrf.SaveFormat 
        End If 
    Next cnvWrdPrf 
 
End Sub

The following code example shows a procedure that saves a document with a password.

Sub SaveWithPassword(docCurrent As Document, strPWD As String) 
    With docCurrent 
        .SaveAs2 WritePassword:=strPWD 
    End With 
End Sub

See also

Document Object

[!includeSupport and feedback]

Создание нового документа Word или открытие существующего из кода VBA Excel. Методы Documents.Add и Documents.Open. Сохранение и закрытие документа.

Работа с Word из кода VBA Excel
Часть 2. Создание и открытие документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Новый документ Word создается из кода VBA Excel с помощью метода Documents.Add:

Sub Test1()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = myWord.Documents.Add

myWord.Visible = True

End Sub

Переменную myDocument можно объявить с типом Object, но тогда не будет ранней привязки к типу Word.Document и подсказок при написании кода (Auto List Members).

Открытие существующего документа

Существующий документ Word открывается из кода VBA Excel с помощью метода Documents.Open:

Sub Test2()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = _

myWord.Documents.Open(«C:Документ1.docx»)

myWord.Visible = True

End Sub

Замените в этой процедуре строку «C:Документ1.docx» на адрес своего файла.

Подключение к открытому документу

Присвоение переменной ссылки на существующий экземпляр Word.Application осуществляется в VBA Excel с помощью функции GetObject:

Sub Test3()

Dim myWord As Object, myDoc As Word.Document

On Error GoTo Instr

    Set myWord = GetObject(, «Word.Application»)

    Set myDoc = myWord.Documents(«Документ1.docx»)

    myDoc.Range.InsertAfter «Добавляем новый текст, подтверждающий подключение к открытому документу.»

Exit Sub

Instr:

    MsgBox «Произошла ошибка: « & Err.Description

End Sub

Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Также произойдет ошибка, если не будет найден указанный документ (в примере — «Документ1.docx»).

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

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

Чтобы сохранить из кода VBA Excel новый документ Word, используйте метод SaveAs2 объекта Document:

myDocument.SaveAs2 («C:Документ2.docx»)

Замените «C:Документ2.docx» на путь к нужному каталогу с именем файла, под которым вы хотите сохранить новый документ.

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

Сохраняйте изменения в существующем документе с помощью метода Document.Save или параметра SaveChanges метода Document.Close:

‘Сохранение изменений документа

myDocument.Save

‘Сохранение изменений документа

‘при закрытии

myDocument.Close ‘по умолчанию True

myDocument.Close True

myDocument.Close wdSaveChanges

‘Закрытие документа без

‘сохранения изменений

myDocument.Close False

myDocument.Close wdDoNotSaveChanges

Закрытие любого сохраненного документа

Метод Document.Close закрывает документ, но не приложение. Если работа с приложением закончена, оно закрывается с помощью метода Application.Quit.

Содержание

  • 1 Add a word document
  • 2 Close a document
  • 3 Generating Word ata from an Excel VBA program
  • 4 Load contact table from Access and create letter in Word
  • 5 Open an Existing Document
  • 6 Save a document
  • 7 Save Changes to a Document
  • 8 To close a specific document, you can close the active document or you can specify a document name:
  • 9 To create a new document that uses a specific template, use this:
  • 10 To save a document with a new name, use the SaveAs method

Add a word document

   <source lang="vb">

Sub wordDoc()

   Dim WordApp As Object
   Set WordApp = CreateObject("Word.Application")
   With WordApp
       .Documents.Add
   End With

End Sub

</source>
   
  

Close a document

   <source lang="vb">

Sub exitFor()

   Dim Doc As Document
   For Each Doc In Documents
       If Doc.Name = "Document1" Then Exit For
       Doc.Close
   Next Doc

End Sub

</source>
   
  

Generating Word ata from an Excel VBA program

   <source lang="vb">

Sub MakeMemos()

   Dim WordApp As Object
   Set WordApp = CreateObject("Word.Application")
   
   For i = 1 To 3
       Application.StatusBar = "Processing Record " & i
       SaveAsName = ThisWorkbook.Path & "test.doc"
       With WordApp
           .Documents.Add
           With .Selection
               .Font.Size = 14
               .Font.Bold = True
               .ParagraphFormat.Alignment = 1
               .TypeText Text:="M E M O R A N D U M"
               .TypeParagraph
               .TypeParagraph
               .Font.Size = 12
               .ParagraphFormat.Alignment = 0
               .Font.Bold = False
               .TypeText Text:="Date:" & vbTab & Format(Date, "mmmm d, yyyy")
               .TypeParagraph
               .TypeText Text:="To:" & vbTab & " Manager"
               .TypeParagraph
               .TypeText Text:="From:" & vbTab & _
                  Application.userName
               .TypeParagraph
               .TypeParagraph
               .TypeText "text"
               .TypeParagraph
               .TypeParagraph
               .TypeText Text:="Units Sold:" & vbTab & "asdf"
               .TypeParagraph
               .TypeText Text:="Amount:" & vbTab & Format(1000, "$#,##0")
           End With
               .ActiveDocument.SaveAs FileName:=SaveAsName
               .ActiveWindow.Close
       End With
   Next i
   WordApp.Quit
   Set WordApp = Nothing
   Application.StatusBar = ""
   MsgBox " memos were created and saved in " & ThisWorkbook.Path

End Sub

</source>
   
  

Load contact table from Access and create letter in Word

   <source lang="vb">

Sub ControlWord()

   Dim objWord As New Word.Application
   Dim rsContacts As New ADODB.Recordset
   Dim strLtrContent As String
   rsContacts.ActiveConnection = CurrentProject.Connection
   rsContacts.Open "tblContacts"
   
   objWord.Documents.Add
   
   Do While Not rsContacts.EOF
     strLtrContent = rsContacts("FirstName") & " " & rsContacts("LastName")
     strLtrContent = strLtrContent & rsContacts("Address") & vbCrLf
     strLtrContent = strLtrContent & rsContacts("City") & ", " & rsContacts("Region")
     strLtrContent = strLtrContent & "  " & rsContacts("PostalCode") 
     strLtrContent = strLtrContent & "Dear " & rsContacts("FirstName") & " "
     strLtrContent = strLtrContent & rsContacts("LastName") & ":" 
   
       objWord.Selection.EndOf
       objWord.Selection.Text = strLtrContent
   
       objWord.Selection.EndOf
       objWord.Selection.InsertBreak
       
       rsContacts.MoveNext
   Loop
   objWord.Visible = True
   objWord.PrintPreview = True

End Sub

</source>
   
  

Open an Existing Document

   <source lang="vb">

Sub Main()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Open Filename:="C:Arrays.docx", ReadOnly:=True, AddtoRecentFiles:=False

End Sub

</source>
   
  

Save a document

   <source lang="vb">

Sub WordLateBound()

   Dim objWord As Object 
   Dim objDoc As Object 
   Set objWord = CreateObject("Word.Application") 
   Set objDoc = objWord.Documents.Add 
   objDoc.SaveAs "C:testdoc2.doc" 
   objDoc.Close 
   Set objDoc = Nothing 
   Set objWord = Nothing 

End Sub

</source>
   
  

Save Changes to a Document

   <source lang="vb">

Sub main()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Save

End Sub

</source>
   
  

To close a specific document, you can close the active document or you can specify a document name:

   <source lang="vb">

Sub main()

   Dim wdApp As Word.Application
   Set wdApp = GetObject(, "Word.Application")
   wdApp.ActiveDocument.Close
   "or
   wdApp.Documents("Arrays.docx").Close

End Sub

</source>
   
  

To create a new document that uses a specific template, use this:

   <source lang="vb">

Sub add()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Add Template:="Contemporary Memo.dot"

End Sub

</source>
   
  

To save a document with a new name, use the SaveAs method

   <source lang="vb">

Sub Main()

   Dim wdApp As Word.Application
   Set wdApp = GetObject(, "Word.Application")
   wdApp.ActiveDocument.SaveAs "C:MemoTest.docx"

End Sub

</source>

Всем привет, с вами автор блога scriptcoding.ru. Данная публикация рассматривает сохранение документа в Word с помощью программирования и с помощью рядовых методов системы Windows.

По сути, что тут может быть особенно – нажал на кнопку «Сохранить» или «Сохранить Как» и все, радуйся жизни. Но, так как я очень люблю оперировать, тьфу ты… программировать, то я решил рассмотреть решение данной задачи программным путем.

Из всей объектной модели Word, компонентами, которые предоставляют средства для сохранения в ворде документа, являются объект Documentи коллекция Documents. По сути, у объекта Document есть два метода: Save и SaveAs, которые соответствуют диалоговым окнам «Сохранить» и «Сохранить Как«, а коллекция предоставляет только метод Save. Я уже рассматривал данный объект и коллекцию, но не углублялся в методы Save и SaveAs, а все потому, что у метода SaveAs огромное количество параметров, описание которых тянет на отдельную статью. Вот я и решил собрать все это воедино, и описать.

Объект Document – сохранение в ворде

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

Save(NoPrompt, OriginalFormat) – Показывает, как в ворде сохранить все файлы, которые входят в коллекцию Documents.

NoPrompt – Если значение true, то Word автоматически сохранит все файлы. Если значение false — Word предложит пользователю сохранить каждый файл, изменившийся с момента последнего сохранения.

OriginalFormat — Определяет, как документы будут сохранены в ворде. Содержит значение константы WdOriginalFormat:

  • wdOriginalDocumentFormat — 1 — Оригинальный формат.
  • wdPromptUser — 2 – Пользователю будет предложено выбрать формат.
  • wdWordDocument — 0 – Формат Microsoft Word.

Если сохранение в ворде ранее не производилось, то диалоговое окно «Сохранить как» запросит у пользователя имя файла.

SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks, CompatibilityMode) – Сохранение файла Word с новым именем или форматом (Диалоговое окно «Сохранить Как»).

FileName – Позволяет задать путь и имя сохраняемого файла в ворде. Если задать только имя файла, то произойдет сохранение в ворд в папке по умолчанию – «Мои Документы». Если документ с таким именем уже существует, то произойдет перезапись без уведомления пользователя.

FileFormat – Задаем формат, в котором сохраняется документ в Word. Значение константы WdSaveFormat.

Константа WdSaveFormatпозволяет задать формат PDF (wdFormatPDF – 17) или XPS(wdFormatXPS — 18). Однако, что бы сохранить в ворде файл в этих форматах, вам придется установить расширение SaveAsPDFandXPS, которое доступно на сайте Майкрософт. Смотрите статью «Как в ворде сохранить документ в PDF формате»

LockComments – Содержит логические значения, true — заблокировать документ для комментариев. По умолчанию используется false.

Password – Пароль для открытия.

AddToRecentFiles – Содержит логическое значение, true — добавить документ в список недавно использовавшихся в меню Файл. По умолчанию используется True.

WritePassword — Пароль для сохранения в ворде изменений.

ReadOnlyRecommended — Содержит логические значения, true – открывать только для чтения. По умолчанию используется False.

EmbedTrueTypeFonts — Содержит логические значения, true – сохранить TrueType шрифты вместе с документом.

SaveNativePictureFormat – Параметр используется, если графики были импортированы из другой платформы (например, Macintosh). true — сохранить в ворд только версию Microsoft Windows импортируемых графиков.

SaveFormsData –true — сохранить в ворд данные, введенные пользователем в форме в виде записи.

SaveAsAOCELetter – Параметр актуален, если документ имеет прикрепленное почтовое вложение. true – сохраняем документ Word как AOCE письмо.

Encoding – Отвечает за кодировку текста. По умолчанию используется системная кодировка. Параметр должен содержать значение константы MsoEncoding.

InsertLineBreaks – Параметр используется, если происходит сохранение документа в Word в виде текстового файла. true — вставить разрывы строк в конце каждой строки текста.

AllowSubstitutions – Актуально, если файл ворд сохраняется в виде текстового файла. Значение true позволяет Word заменить некоторые символы в тексте их упрощенными аналогами. Например, символа авторского права. По умолчанию используется значение False.

LineEnding – Определяет форматирование строк и абзацев в документах, сохраненных в виде текстовых файлов. Может быть одним из следующих значений константы WdLineEndingType:

  • wdCRLF — 0 — возврат каретки и строки.
  • wdCROnly — 1 — Возврат только каретки.

AddBiDiMarks – true — добавить управляющие символы в выходной файл.

CompatibilityMode — Режим совместимости, который Word2010 использует при открытии документа. Значение константы WdCompatibilityMode:

  • wdCurrent — 65535 — Совместимость режим эквивалентен последней версии Microsoft Word.
  • wdWord2003 — 11 — Word2010 введен в режиме, который наиболее совместим с Word2003.
  • wdWord2007 — 12 — Word2010 введен в режиме, который наиболее совместим с Office Word2007.
  • wdWord2010 — 14 — Word2013 введен в режиме, который наиболее совместим.
  • wdWord2013 — 15 — По умолчанию. Все функции Word 2013 включены.

Если данный параметр отсутствует, то принимается значение 0 – сохраняется текущий режим совместимости.

Коллекция Documents – как в ворде сохранить документ

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

Save(NoPrompt, OriginalFormat) – Метод выполняет ту же функцию, что и Save объекта Document, только для коллекции Documents.

Хорошо, с теорией закончили, теперь привожу два примера программного кода на языке VBScript и JScript, котрые создают новый документ, вставляют в него форматированный текст, содержащий информацию о сервере сценариев Windows Script Host и сохраняют в ворде данный документ в текущем каталоге (каталог, откуда был произведен запуск сценария).

Программный код на языке VBSCRIPT:

' ----------------------------------------------------------------------------
' Сохранение документа в Word
' SaveAs.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, oFont, oShell, CurDir
 
set oWord = WScript.CreateObject("Word.Application")   
set oShell = WScript.CreateObject("WScript.Shell")
set oDoc = oWord.Documents                       
oDoc.Add()                                                            
set oSel = oWord.Selection                           
oWord.Visible = True                                           
set oFont = oSel.Font
 
CurDir = oShell.CurrentDirectory        'текущая папка
 
with oFont
    .Size = 20
    .Name = "Times New Roman"
    .Bold=true
    .Colorindex=2
end with
 
oSel.TypeText "как в ворде сохранить документ"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ' word сохранение файла
 
with oFont
    .Size = 12
    .Bold=false
    .Colorindex=0
end with
 
With oSel
     .TypeParagraph
     .TypeParagraph
End With
 
With WScript
     call TXInsert("Name: ", .Name & "")
     call TXInsert("FullName: ", .FullName & "")
     call TXInsert("ScriptName: ", .Name & "")
     call TXInsert("ScriptFullName: ", .FullName & "")
     call TXInsert("Path: ", .Path & "")
     call TXInsert("Version: ", .Version & "")
     call TXInsert("Application: ", .Application & "")
     call TXInsert("Timeout: ", .Timeout & "")
     call TXInsert("BuildVersion: ", .BuildVersion & "")
End With
 
oDoc(1).SaveAs CurDir & "WscInfo_vbs.doc", 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ' сохранение в ворде
 
Sub TXInsert(a, b)
     With oSel
                 oFont.Bold=true
                 .TypeText a
                 .EndOf
                 oFont.Bold=false
                 .TypeText b
                 .TypeParagraph
     End With
End Sub

сохранение файла в Word

Программный код на языке JSCRIPT:

// ----------------------------------------------------------------------------
// Сохранение документа в Word
// SaveAs.js
// ----------------------------------------------------------------------------
var oWord1, oDoc1, oSel1, oFont1, oShell1, CurDir1;
 
oWord1 = WScript.CreateObject("Word.Application");
oShell1 = WScript.CreateObject("WScript.Shell");
oDoc1 = oWord1.Documents;                       
oDoc1.Add();                                                           
oSel1 = oWord1.Selection;                            
oWord1.Visible = true;                                           
oFont1 = oSel1.Font;
 
CurDir1 = oShell1.CurrentDirectory;        //текущая папка
 
with(oFont1){
    Size = 20;
    Name = "Times New Roman";
    Bold=true;
    Colorindex=2;
}
 
oSel1.TypeText("как в ворде сохранить документ");                                                                                                                                                                                                                                                                                                                                                                                                                      // word сохранение файла
 
with(oFont1){
    Size = 12;
    Bold=false;
    Colorindex=0;
}
 
with(oSel1){
     TypeParagraph();
     TypeParagraph();
}
 
with(WScript){
     TXInsert1("Name: ", Name + "");
     TXInsert1("FullName: ", FullName + "");
     TXInsert1("ScriptName: ", Name + "");
     TXInsert1("ScriptFullName: ", FullName + "");
     TXInsert1("Path: ", Path + "");
     TXInsert1("Version: ", Version + "");
     TXInsert1("Application: ", Application + "");
     TXInsert1("Timeout: ", Timeout + "");
     TXInsert1("BuildVersion: ", BuildVersion + "");
}
 
oDoc1(1).SaveAs(CurDir1 + "\WscInfo_js.doc", 0);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              // сохранение в ворде
 
function TXInsert1(a, b){
     with(oSel1){
                 oFont1.Bold=true;
                 TypeText(a);
                 EndOf();
                 oFont1.Bold=false;
                 TypeText(b);
                 TypeParagraph();
     }
}

И так, с программированием закончили, теперь можно приступить к разбору программного кода. Обратите внимание, что в примере для JSCRIPT я изменил имена переменных, добавив к ним единицу.

В самом начале происходит подключение различных классов и коллекций, которые позволяет подключить объектную модель Word, и создать новый документ. Далее следует объявление переменной CurDir, она будет хранить путь к текущему каталогу, именно в этот каталог произойдет сохранение документа в ворде. Доступ к текущему каталогу осуществляется через класс WScript.Shell – смотрите статью «Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory — Переменные среды Windows и текущий каталог«.

Далее с помощью класса Font – статья «Объект Word Font — параметры форматирования шрифта«, происходит настройка параметров текста: цвет, размер и так далее. После с помощью метода TypeText класса Selection происходит вставка фразы «как в ворде сохранить документ«, данная фраза также будет отформатирована: жирный шрифт и увеличенный размер символов. После мы дважды вставляет параграф – метод TypeParagraph.

Следующим этапом является использование несколько раз процедуры TXInsert, который будет передаваться два параметра: две текстовые строки. Все происходит так, что процедура вставляет в документ параметры свойств класса WScript – имя свойства и его значение.

После всей проделанной работы происходит вызов метода SaveAs, которые отвечает за сохранение файла Word. В нашем случае, в сценарии на языке VBSCRIPT произойдет сохранение документа в ворде под именем «WscInfo_vbs.doc«, а в сценарии на языке JSCRIPT – сохранение файла в ворде под именем «WscInfo_js.doc«

Автор lapin9126, 21 мая 2017, 08:33

Добрый день. Как сохранить открытый документ с другим именем, в другую папку расположенную в той же директории откуда открыт документ, и в нём выполнить макрос.
Например: документ с именем «Исходный» («С:оригиналы»), сохранить как «Исходный (копия)» в папку «обработано»(«С:оригиналыобработано») и  в  «Исходный (копия)» выполнить макрос.



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

Исходный файл после создания копии нужно закрыть или нужно, чтобы он оставался открытым?




Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

Папка «обработано» должна быть создана (можно и с помощью макроса её создать).

Макрос

Sub Макрос()

    Dim doc As Document

        ‘ Присваиваем активному ворд-файлу имя «doc».
    Set doc = ActiveDocument

        ‘ Создание копии активного файла, при этом он закроется.
    doc.SaveAs2 FileName:=doc.Path & «обработаноИсходный (копия).docx», FileFormat:=wdFormatXMLDocument

        ‘ Здесь делаете действия с переменной «doc», которая представляет собой новый созданный файл.
    ‘ Вывод имени файла «doc» в View — Immediate Window.
    Debug.Print doc.Name

    End Sub

[свернуть]



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан

Переменную «doc» не обязательно использовать, можно и без неё обойтись:

Макрос

Sub Макрос()
    ‘ Создание копии активного файла, при этом он закроется.
    ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & «обработаноИсходный (копия).docx», FileFormat:=wdFormatXMLDocument
    ‘ Здесь делаете действия с новым созданным файлом, используя «ActiveDocument».
    ‘ Вывод имени активного файла в View — Immediate Window.
    Debug.Print ActiveDocument.Name
End Sub

[свернуть]


При сохранении файла нужно присваивать имя исходного (открытого) файла с добавлением (копия), а не конкретно «Исходный (копия)» Это для примера было.



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан
Макрос

Sub Макрос()

    Dim FN As String

        ‘1. Формирование полного имени (путь + имя) для нового файла на основе полного имени активного файла.
    ‘ Вычленение имени файла.
    FN = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, «.») — 1)
    ‘ Добавление к имени файла фразы «(копия»).
    FN = FN & » (копия)» & «.docx»
    ‘ Добавление пути.
    FN = ActiveDocument.Path & «» & FN

        ‘2. Создание копии активного файла, при этом он закроется.
    ActiveDocument.SaveAs2 FileName:=FN, FileFormat:=wdFormatXMLDocument

        ‘3. Здесь делаете действия с новым созданным файлом, используя «ActiveDocument».
    ‘ Вывод имени активного файла в View — Immediate Window.
    Debug.Print ActiveDocument.Name

    End Sub

[свернуть]


Спасибо, чуть-чуть подправил (добавил место сохранения  & «обработано» & «»), теперь то что нужно.


  • Форум по VBA, Excel и Word

  • Word

  • Макросы в Word

  • Word: Как сохранить документ (ворд-файл) с помощью VBA?

Like this post? Please share to your friends:
  • Vba save as word documents
  • Vba runtime error 424 excel
  • Vba rename files excel
  • Vba refresh query excel
  • Vba read from excel file