【Excel、Access、PowerPoint、Wordマクロ】各OFFICEドキュメント毎、新規作成を行うマクロのサンプル一覧

各OFFICEドキュメント毎、新規作成を行うマクロのサンプル一覧

マクロを実装したOFFICEドキュメントから他のOFFICEドキュメントを制御(新規作成)したい場合を考えて作成。

(例えば、Excelからwordファイルを制御(新規作成)したい等)

C言語的な感覚で言うopen,write,closeといったファイル出力をマクロで表現するとこのような感じなのかな。

なお、各ドキュメントのオブジェクトの作成ではCreateObject()を使う手もあったが、

コード実装時にインテリセンス機能を使いたかったので参照設定にしてある。

この中で、各ドキュメントのsave処理を握っているWorkbook、Document、Presentationが、キモ

それぞれのドキュメントの中身(例えばexcelならセル、wordなら段落)の情報を抱えているので、各情報の追加・変更・削除のコツがつかめれば、マクロ作成の幅が広がりそうだ。

Accessは、もう少し要調査

Sub 各OFFICEドキュメントの新規作成マクロ()
   
   
    ‘参照設定にてexcel,word,powerpoint,AccessのLibraryを追加する。
    ‘実行確認環境はoffice2010、参照バージョンLibraryは以下のとおり
    ‘①Excel   Microsoft Excel 14.0 Object Library
    ‘②Access  Microsoft Access 14.0 Object Library
    ‘③PowerPoint  Microsoft PowerPoint 14.0 Object Library
    ‘④Word    Microsoft Word 14.0 Object Library

    ‘参照設定確認用デバッグコード(Excel用)
    ‘ Dim Ref, buf As String
    ‘For Each Ref In ActiveWorkbook.VBProject.References
    ‘     Debug.Print Ref.Name & vbTab & Ref.Description & vbCrLf
    ‘Next Ref
    ‘
       
    ‘以下ソース
    ‘SavePath配下にSaveName(+各ドキュメント毎の拡張子)のファイルが作成される。
   
    Dim xlsApp As Excel.Application
    Dim docApp As Word.Application
    Dim pptApp As PowerPoint.Application
    Dim dbApp As Access.Application
       
    Dim SavePath As String
    Dim SaveName As String
   
    SavePath = "C:\test\"
    SaveName = "testData"
    If Dir(SavePath, vbDirectory) = "" Then
        MkDir SavePath
    End If
   
    ‘Excelの新規作成
    Set xlsApp = New Excel.Application
    Dim wb As Excel.Workbook
    Set wb = xlsApp.Workbooks.Add
    Call wb.SaveAs(SavePath & SaveName)
    Debug.Print wb.Path
    wb.Close
   
    ‘Wordの新規作成
    Set docApp = New Word.Application
    Dim doc As Word.Document
    Set doc = docApp.Documents.Add
    Call doc.SaveAs2(SavePath & SaveName)
    Debug.Print doc.Path
    doc.Close
   
    ‘PowerPointの新規作成
    Set pptApp = New PowerPoint.Application
    ‘Set pptApp = CreateObject("Powerpoint.Application")
    Dim pre As PowerPoint.Presentation
    Set pre = pptApp.Presentations.Add(msoFalse)
    Call pre.SaveAs(SavePath & SaveName)
    Debug.Print pre.Path
    Call pre.Close
    Call pptApp.Quit
       
    ‘Accessの新規作成
    Set dbApp = New Access.Application
    Call dbApp.NewCurrentDatabase(SavePath & SaveName)
    Debug.Print dbApp.CurrentProject.Path
    Call dbApp.CloseCurrentDatabase
   
   
End Sub

コメント

タイトルとURLをコピーしました