質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

4077閲覧

VBAでVBA入りのExcelファイル(xlsm)を作成したい

smorgas

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/06/10 02:08

前提・実現したいこと

社内に展開するExcel入力ファイルをVBAで開発している社内SEです。

【具体的な内容】
1.基幹システムから抽出されるエクセルデータを入力しやすい帳票形式にVBAで加工
2.担当者ごとのエクセルファイルとして所定フォルダにアウトプット
といった処理です。

1、2の処理は問題なく開発完了しておりますが、2の担当者が入力するファイルについて、
3.検索フォームや行挿入、行コピー機能など、若干のマクロを追加
して配布したいです。担当者が入力するエクセルデータにマクロは組みたくないのですが、
利便性を検討した結果対応が必要との結論です。
担当者に配布するエクセルに追加するVBAも開発済みです。

発生している問題

お聞きしたいのは、2の担当者ごとのエクセルファイルとして所定フォルダにアウトプットする際に
.xlsx形式の通常のエクセルではなく、3のVBAを適用済みの.xlsm形式でアウトプットするやり方は
あるのでしょうか?3の内容としてはボタンが3つほど、それぞれ該当するフォームも3つ、そこまで複雑なマクロではないです。

補足情報(FW/ツールのバージョンなど)

Excelバージョン:Excel 2016 Standard
OS:Windows10 64bit

VBA、マクロと混在して申し訳ありません。同じ意味として記載しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/10 02:18

最初からVBAを登録済みのxlsmファイルどこかに保存しておき、それをコピーして必要なデータを格納すればいいだけでは?
smorgas

2021/06/10 02:34

ご回答ありがとうございます。 なるほど、盲点でした。そちらの方向性で検討してみたいと思います。 基本的にマクロ入りのファイルをマクロで作成はできないですよね?
neconekocat

2021/06/10 02:54

OpenXMLの規格が公開されている以上、死ぬほど頑張れば出来るとは思いますよ。普通はまずやりませんが。
guest

回答2

0

VBA

1Sub sample() 2 3 With Workbooks.Add 4 .VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule.AddFromFile "C:\Test\vbacode.txt" 5 .SaveAs "macrobook.xlsm", xlOpenXMLWorkbookMacroEnabled 6 .Close False 7 End With 8 9End Sub
  • Excelのオプションで 「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」
  • 参照設定で Microsoft Visual Basic for Applications Extensibility を選択

投稿2021/06/10 04:14

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/10 04:43

あまりこの辺り詳しくないのですが、同じような感じでボタンやユーザーフォームの追加や配置の変更はできるんでしょうか?
jinoji

2021/06/10 04:55

私も詳しいわけではありませんが、Worksheet.Shapes.AddFormControlでボタン追加したり VBComponents.Add の引数を vbext_ct_StdModule から vbext_ct_MSForm に変えることでユーザーフォームを追加したりは出来そうな感じです。 どこまでをテンプレート的に事前に用意し、どこからを動的にマクロ生成するのがよいかは、 やりたいことが何なのかによって正解は変わってくると思いますが、 一つの選択肢としてご紹介しました。
guest

0

自己解決

neconekocat様の助言の通り対応してみたいと思います。ありがとうございました。

投稿2021/06/10 02:57

smorgas

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問