各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
コメント