Excel2007マクロを他のファイルで使う方法(マクロ初心者です)

このQ&Aのポイント
  • Excel2007の「4月」というファイルに印刷ボタンが作られており、マクロが登録されています。
  • 「4月」ファイルを新しく「5月」ファイルとして保存した際に、マクロが消えてしまいました。
  • 「5月」ファイルに保存されているマクロを使用するにはどのようにすればよいでしょうか?
回答を見る
  • ベストアンサー

マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です

マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です。) Excel2007の「4月」というファイルに印刷ボタンが作られており、 以下のマクロが登録されていました。 Sub 非表示(2)() ' ' 非表示(2) Macro ' ' Rows("130:193").Select Selection.EntireRow.Hidden = True ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" Selection.EntireRow.Hidden = False Range("A1").Select End Sub 「4月」ファイルを新しく「5月」ファイルとして名前を付けて保存したのですが、 どうやら、マクロ有効ブックとして保存していなかったらしく、 マクロが消えてしまっていました。 「5月」ファイルの印刷ボタン(オブジェクト)を選択して  右クリック→マクロの登録 から、「4月」ファイルの当該マクロを選択して登録したところ、 「5月」ファイルの印刷ボタンを押すたびに「4月」ファイルが開いてしまいます。 これは、「4月」ファイルに保存されているマクロを読みにいってしまっているから。 ということになるのでしょうか? このマクロを「5月」ファイルに保存して使用するにはどのようにすればよいか、 教えて頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

ご質問の直接の回答としては 4月ブックを開く 5月ブックも開く ALT+F11を押す 現れた画面でプロジェクトエクスプローラを見る VBAProject(4月.xlsm)の中を開くとModule1などのような名前のモノが入っているので, そのままVBAProject(5月.xlsm)にドラッグすると引っ越せる ブックに戻り,5月のボタンにマクロの登録で5月のブックのマクロを設定する と出来ます。 でもそんなマニアな事をしなくても, 1.4月ブックを開く 2.名前を付けて保存で5月のブックの名前で保存し直す   勿論マクロ有効ブックにして保存すること 3.5月の本番データを新調した5月ブックにコピーして貼り込む 以上で十分です。今後さらに6月や7月ブックを増やしていくときも同じです。

mitucan
質問者

お礼

ありがとうございました。 無事に引越ができました。 ちなみに、質問はかなり簡略化してますので、 後半部分はもちろん考えたのですが、 他にも色々と要素があってダメだったのです。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>このマクロを「5月」ファイルに保存して使用するにはどのようにすればよいか、 理屈では、「5月」に保存すればよいようですが、本来、マクロとファイルは別でもよいわけです。 ファイルの印刷ボタン(オブジェクト)に共有のマクロにする場合は、 「個人用マクロブック」の標準モジュールに当該マクロを貼り付けて、 ボタンに、そのマクロを選んでください。 たぶん、そのマクロは、フォームツールのボタンを使っているはずです。しかし、クイックツールアクセスバーをカスタマイズして、マクロを登録してあげる方法もあります。そうしたら、ボタン自体をコピーする必要もなくなります。 「個人用マクロブック」は、記録マクロを作る時に、[マクロの保存先]に、個人用マクロを選択してあければ、自動的にファイルが作られます。

mitucan
質問者

お礼

ありがとうございました。 なるほどですね。 共有ファイルなので複数の人間がアクセスしますので、 全員が同様にアイコンの設定をしなければなりませんが、 そうすると、エクセルの各ファイルそのもののサイズダウンが図れますよね? 今回の質問ぐらいのマクロならたいしたことありませんが、 これはうまく使えればかなり有効な気がします。

noname#192382
noname#192382
回答No.2

マクロを他のファイルで使うことが出来ます。新ファイルで空のマクロを作っておいて、次に既存のマクロをコピーして、新マクロの編集のステージで貼り付けをします。そして新マクロを必要ならば手直しをします。これでいいはずです。

mitucan
質問者

お礼

ありがとうございました。 この方法もマスターしました。 今後活用させて頂きます。

関連するQ&A

  • シートの保護を実行した時、マクロだけは作動させたい

    いつもお世話になります。 WINDOWS7 EXCELL2010です。 シートの保護を実行すると下記のマクロが作動しないのですが何かいい方法はないでしょうか。 もし可能ならばご教示いただければ幸いです。 このマクロは素人の私が作成したもので合計のある行だけを表示するものです。 参考 Sub 非表示() ' ' 非表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA '' Rows("72:87").Select Selection.EntireRow.Hidden = True Rows("89:95").Select Selection.EntireRow.Hidden = True Rows("97:105").Select Selection.EntireRow.Hidden = True Rows("107:112").Select Selection.EntireRow.Hidden = True Rows("114:121").Select Selection.EntireRow.Hidden = True Rows("123:131").Select Selection.EntireRow.Hidden = True Rows("133:145").Select Selection.EntireRow.Hidden = True Rows("147:152").Select Selection.EntireRow.Hidden = True Rows("154:159").Select Selection.EntireRow.Hidden = True Rows("161:169").Select Selection.EntireRow.Hidden = True Rows("171:179").Select Selection.EntireRow.Hidden = True Rows("181:187").Select Selection.EntireRow.Hidden = True Rows("189:195").Select Selection.EntireRow.Hidden = True Rows("197:205").Select Selection.EntireRow.Hidden = True Rows("207:214").Select Selection.EntireRow.Hidden = True Rows("216:223").Select Selection.EntireRow.Hidden = True Rows("225:229").Select Selection.EntireRow.Hidden = True Rows("231:238").Select Selection.EntireRow.Hidden = True Rows("240:243").Select Selection.EntireRow.Hidden = True Rows("245:250").Select Selection.EntireRow.Hidden = True Rows("252:259").Select Selection.EntireRow.Hidden = True Rows("261:266").Select Selection.EntireRow.Hidden = True Range("A1").Select End Sub

  • マクロでExcelパスワードを入力する方法

    教えて頂きたいのですが、 今Excelのフォームボタンにマクロを使って、 別のExcelファイルを開けるように設定していますが、 そのファイルにパスワードを掛けており、フォームボタンを押すと、 まず、そのパスワード入力のダイアログが出ます。 それを、フォームボタンを押したときのマクロに組み込み、 パスワード入力のダイアログを出さずに開く事って可能でしょうか? 現在のフォームボタンに登録しているマクロの記述は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub Macro11() ' ' Macro11 Macro ' マクロ記録日 : 2008/9/25 ユーザー名 : ************ ' ' Range("I29").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー I29にハイパーリンクにてアドレスを入力しているだけのものです。 宜しくお願いいたします。

  • エクセルシート:ボタン押下で特定列の表示←→非表示切り替え

    (行いたいこと) sheet1の中にコマンドボタン1があって、そのボタンが押されたとき既にC列からF列が非表示のときは表示してやり、また逆に表示のときは非表示にする。 (macroを作って実行したい) (現在の考えている状況) 後どうすればいいですか。今は何も動作しません。 今macro3というマクロの中に次のようなものが入っています。 Private Sub CommandButton1_Click() If Selection.EntireColumn.Hidden = True Then Columns("B:G").Select Range("G1").Activate Selection.EntireColumn.Hidden = False Else: Columns("C:F").Select Selection.EntireColumn.Hidden = True End Sub Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2006/3/24 ユーザー名 : ' Columns("C:F").Select Selection.EntireColumn.Hidden = True Columns("B:G").Select Range("G1").Activate Selection.EntireColumn.Hidden = False Range("B2").Select End Sub

  • EXCEL-VBマクロで教えて下さい

    パスワードを入力を促すVBマクロですが「キャンセル」キーを押した時に 以降の操作をせずマクロ終了したいのですがどのような構文を挿入すべき でしょうか? Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2012/7/27  ユーザー名 : HA社 '    Const MYPASSWORD As String = "apcs123"    Dim myPassInput As String    myPassInput = InputBox("入力してください", "パスワードの入力")    Do While MYPASSWORD <> myPassInput    myPassInput = InputBox("違います。再度入力してください", "パスワードの入力")    Loop    ActiveSheet.Unprotect    Rows("40:50").Select    Selection.EntireRow.Hidden = False    Range("A1:C1").Select End Sub

  • 【Excel】 マクロが止まってしまいます。

    こんにちは。 マクロを記録し、その内容をA1セルをダブルクリックで実行するようにしたいと思います。 記録したマクロを、[ツール]から実行すると、正常に再生されましたが、以下のようにダブルクリックで実行するようにすると、 「Columns("C:N").Select」のところで止まってしまいます。 どのように書くと良いのか教えてください。 -------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Columns("A:U").Select Selection.Copy Sheets("一覧").Select Range("A1").Select Sheets("一覧").Select Sheets.Add ActiveSheet.Paste Columns("C:N").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.EntireColumn.Hidden = True Range("O4").Select End Sub --------------------------------------------------------

  • エクセルのマクロで行選択

    現在、エクセルでマクロを組んでいます。 行いたい内容としては 1.行6~1765までを選択 2. 1.で選択した行を非表示 3. 行6~"セルH2の値"までをを選択 4. 3.で選択した行を再表示 3の段階で失敗してしまいます。 Rangeメソッドに失敗しました、と出ます ソースは以下のとおりです ----- Private Sub CommandButton2_Click() Dim x As Integer Range("6:1765").EntireRow.Select Selection.EntireRow.Hidden = True x = Range("H2").Value Range("6:x").EntireRow.Select Selection.EntireRow.Hidden = False End Sub ---- 解決法がわかる方、教えてください よろしくお願いします。

  • Excel2000のマクロが上手くいきません

    はじめまして、よろしくお願いします。 仕事で下記のような条件のマクロを作っています。 全くの初心者ですが、 いろんなHPを見て例文を書き写したりしながらなんとか作ってみたのですが、 ですが、どうしても上手く実行されません。 お恥ずかしい話ですが、 ものすごく根本的な簡単なミスをしているだと思うのですが、 どの部分が間違っているかも正直分からなくなってきました。 ご教授いただければ幸いです。 「AAファイルのS1シートのA2~B10をBBファイルのS2シートA2~B10へコピーし、 BBのS2シートB2~B10までの中でデータの入っていない行は削除する」 マクロはBBファイルに書き込んでいます。 また、AAとBBの両方を開いて実行もしています。 Sub Workbooks("AA.xls").Worksheets("S1").Range("A2:B10").Copy _ Workbooks("BB.xls").Worksheets("S2").Range("A2") Application.ScreenUpdating = False On Error Resume Next With Columns("A2:A10") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub お手数おかけいたしますが、よろしくお願いいたします。

  • 【Excel365マクロ】時間短縮方法

    下記は「行9~170のH列が空白ならば非表示にする」というマクロです。 ---------------------- Sub 空白行非表示() Sheets("シート1").Select Application.ScreenUpdating = False For rw = 9 To 170 If Range("H" & rw) = "" Then Rows(rw).EntireRow.Hidden = True End If Next Application.ScreenUpdating = True Columns("E:E").EntireColumn.Hidden = True Range("B2").Select End Sub ---------------------- 同様のマクロを多用していますが、行数が多いファイルは開始数秒後に「応答なし」が表示され、終わるのに1分近く時間がかかることが多く困っております。 行数が10行程度のファイルは数秒~10数秒程度で終わることもありますが、同じく1分近くかかることもあります。 上記マクロ以外に数秒で終わるマクロはありませんか? フィルターの使用は無しでお願いします。

  • マクロを使って印刷範囲を指定したのに

    エクセルでボタンをクリックすると印刷範囲を指定し印刷プレビューまで行えるようにマクロを登録しました。 (A~C列+J~U列)を印刷したいので、D~I列を非表示にし、その後A~Uを選択→印刷→選択した部分にチェック→印刷プレビュー→印刷の方法でマクロ登録しました。登録作業中は正しく印刷できましたが、実際にボタンをクリックするとプレビューには(A~C列+M~U列)しか表示されません。 何度やり直してもダメで、D:Oを非表示にしてA:AAを選択後に印刷プレビューする場合は(A~C列+P~AA列)が正しく印刷できました。非表示にする列が違う場合はできたのに、どこがいけないのでしょうか? 以下のような感じになっています。 Columns("D:I").Select Selection.EntireColumn.Hidden = True Range("A4:U43").Select Selection.PrintOut Copies:=1, Preview:=True, Collate:=True ActiveWindow.LargeScroll Down:=-1 Columns("C:J").Select Selection.EntireColumn.Hidden = False End Sub 説明がうまくできないのですが、宜しくお願いします。

  • エクセルマクロで不特定なファイル名を使用するには

    初めて質問します。 不適切があれば申し訳ございません。 教えていただきたいです。 ファイル名が日々変わる場合、以下のマクロを使用した際に ファイル名が変ったとしてもマクロが実行できるようにするにはどうすれば良いでしょうか? ファイル名が変るのが"日別進捗_20140814.xlsx"の日付の所です。 初歩的で誠に申し訳ございません。 教えていただければ幸いです。 ----------------------------------------------------------- Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Sheet2").Select Windows("日別進捗_20140814.xlsx").Activate Cells.Select Selection.Copy Windows("Book1.xlsm").Activate Cells.Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Range("A1").Select Sheets("Sheet1").Select Range("D15").Select End Sub

専門家に質問してみよう