エクセルマクロについて質問です。

ブック内のデータをマクロでワークシートに整理するマクロを作成しました。
テンプレートで保存し、整理したいブックを開いてワークシートの挿入からテンプレートを選んでも標準モジュールがなくなってしまってマクロが実行できません。逆にテンプレートを先に開き、整理したいデータをテンプレートのほうのシートに貼ればマクロは実行可のです。この方法では不可能なのでしょうか。なにか解決案があれば教えてください。

回答の条件
  • 1人2回まで
  • 登録:2006/10/04 22:27:22
  • 終了:2006/10/11 22:30:04

回答(4件)

id:ardarim No.1

ardarim回答回数897ベストアンサー獲得回数1452006/10/04 23:28:44

ポイント23pt

標準モジュールに書いたマクロはテンプレートでコピーされないようなので、ブックに付随するマクロとしてテンプレートに登録すれば問題ないと思います。(私の環境ではできました)


Visual Basic Editorを開き、プロジェクトビューから

[VBAProject (テンプレートファイル名)]
 -[Microsoft Excel Object]
   -[ThisWorkbook]

をダブルクリックし、ここにテンプレート化したいマクロをコピーし、テンプレートファイルを保存してください。

id:ardarim No.2

ardarim回答回数897ベストアンサー獲得回数1452006/10/04 23:37:57

ポイント23pt

すみません。先ほどの回答ウソでした...

テンプレート挿入時にマクロ警告が出るので大丈夫だと思ったら肝心のマクロはコピーされていませんでした。


別のやり方としてすべてのブックから共通で呼び出せるマクロを登録する方法(personal.xls)が下記に書いてありますので、こちらを参考にしてみてはいかがでしょうか。

http://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228642/

id:ablation

検討してみます。

2006/10/05 21:20:23
id:robbie21 No.3

robbie21回答回数34ベストアンサー獲得回数12006/10/05 06:14:04

ポイント22pt

挿入したいシートの中にコードを書いておけば大丈夫です。

(操作の例:ワークシート名の書かれたタブの上で右クリック-[コードの表示])

ただし、操作後にデータの書いてあるブックでマクロを使用する必要がないのなら、データ整理用のマクロを書かれたブックは他に作って、データのブックにはマクロを残さない方法をお勧めします。

例えば

C:\Temp\Data.xlsのDataシートにデータがあるとして、

新しいシートにデータを移すマクロは以下のようになります。


'データをテンプレートにコピー

'新シート版

Sub FormatData1()

FormatDataToNewSheet Workbooks("C:\Temp\Data.xls").Worksheets("Data")

End Sub

Sub FormatDataToNewSheet(DataSheet As Worksheet)

'あらかじめ自分で保存したテンプレートの場所

Const TemplatePath = "C:\temp\x.xlt"

Dim NewSheet As Worksheet

Set NewSheet = DataSheet.Parent.Sheets.Add(Type:=TemplatePath)

DataSheet.Cells.Copy

NewSheet.Cells.PasteSpecial xlPasteValues

End Sub



新しいシートでなくて、ブックに作る場合。


'データをテンプレートにコピー

'新ブック版

Sub FormatData2()

FormatDataToNewBook Workbooks("C:\Temp\Data.xls").Worksheets("Data")

End Sub

Sub FormatDataToNewBook(DataSheet As Worksheet)

Const TemplatePath = "C:\temp\x.xlt"

Dim NewBook As Workbook

Set NewBook = Workbooks.Add(TemplatePath)

Dim NewSheet As Worksheet

Set NewSheet = NewBook.Sheets(1)

DataSheet.Cells.Copy

NewSheet.Cells.PasteSpecial xlPasteValues

End Sub

id:ablation

シートに書くとそのシートに対する操作はうまくいきますが別のシートに対する操作でエラーになるます。

2006/10/05 21:20:19
id:robbie21 No.4

robbie21回答回数34ベストアンサー獲得回数12006/10/06 10:49:20

ポイント22pt

ablationさん

シートに書くとそのシートに対する操作はうまくいきますが別のシートに対する操作でエラーになるます。

具体的にはどんなエラーが出ますか?

書き方次第で、別のシートの操作は可能です。

例えば以下のコードをシート内に記入して試してください。

Public Sub 他のブックを操作()
    Dim NewBook As Workbook
    Set NewBook = Workbooks.Add
    NewBook.Sheets(1).Range("A1").Value = "このセルは新しいブックの新しいシートのA1セルです。"
End Sub

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません