2017-08-22 10 views
0

差し込み印刷を実行した後、文書を個々の文書に分割し、特定の項目、好ましくは文書の最初の行の後に名前を付ける方法を見つけようとしています。ヘッダ。私はドキュメントを分割する方法しか見つけられませんでしたが、名前を付ける方法を理解することはできません。ドキュメントをヘッダーとして保存するためのVBAコードの記述方法についてのご意見は非常に高く評価されます。MS Word VBA:ヘッダーを使用して文書を保存する

+0

あなたの現在のコードを投稿できますか? – 0m3r

+0

私はこれに別の投稿を追加しました。私は自分のファイルを私が望む名前にする方法を考え出しましたが、今問題はそれを保存しています。これは質問のタイトルです:MS Word VBA:ファイルの保存、ランタイムエラー5152 – Cocoberry2526

答えて

1

文書を既に分割しているため、以下のコードでは最初の文を使用して名前を付けることがあります。

Private Function DocName(Doc As Document) As String 
    ' 23 Aug 2017 

    Const Illegals As String = "\:/;?*|>""" 
    Static FaultCounter As Integer 
    Dim Fun As String 
    Dim Title As String 
    Dim Ch As String 
    Dim i As Integer 

    Title = Trim(Doc.Sentences(1)) 
    For i = 1 To Len(Title) 
     Ch = Mid(Title, i, 1) 
     If (Asc(Ch) > 31) And (Asc(Ch) < 129) Then 
      If InStr(Illegals, Ch) = 0 Then Fun = Fun & Ch 
     End If 
    Next i 

    If Len(Fun) = 0 Then 
     FaultCounter = FaultCounter + 1 
     Fun = Format(FaultCounter, """Default File Name (""0"")""") 
    End If 

    DocName = Fun 
End Function 

ファイルを保存する前に、重複がないか確認してください。そのためにDir()関数を使い、上記のシステムを使って名前を重複させるための番号を付け加えて、最初の文が空であるかもしれないファイルに名前を付けます。

ファイル名に許可されていない文字も確認する必要があります。私は単純にASCII(32)以下のすべてをASCII(128)より除外し、Windowsが好まない既知のものを除外しました。その範囲をさらに変更することもできます。

Private Sub GetName() 
    Debug.Print DocName(ActiveDocument) 
End Sub 
0

これは私がこれまでのところ、私は非常に役立つウェブサイトのオフにそれを見つけることができたましたが、コードのように保存したコードです - :このような上記の機能の利用コードを呼び出すために

私はそれを把握しようとしている間に私は今すぐにそれを設定した単語 "レポート"、そして文書の番号。

Option Explicit 

Sub splitter() 

' splitter Macro 

' Macro created by Doug Robbins to save each letter created by a mailmergeas 
a separate file. 
Application.ScreenUpdating = False 
Dim Program As String 
Dim DocName As String 
Dim Letters As Integer, Counter As Integer 

Letters = ActiveDocument.Sections.Count 
Selection.HomeKey Unit:=wdStory 
Counter = 1 
While Counter < Letters 
'program = ActiveDocument.MailMerge.DataSource.DataFields("Program_Outcomes_PlanReport_Name").Value 
DocName = "Reports" & LTrim$(Str$(Counter)) 'Generic name of document 
ActiveDocument.Sections.First.Range.Cut 
Documents.Add 
Selection.Paste 
ActiveDocument.Sections(2).PageSetup.SectionStart = wdSectionContinuous 


ActiveDocument.SaveAs filename:="E:\assessment rubrics\Templates" & "\" & DocName, FileFormat:=wdFormatDocument, LockComments:=False, Password:="", 
AddToRecentFiles:=False, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False,   SaveAsAOCELetter:=False 
ActiveWindow.Close 
Counter = Counter + 1 
Wend 

Application.ScreenUpdating = True 

End Sub 
関連する問題