エクセルのマクロについて教えてください

このQ&Aのポイント
  • エクセルのマクロを使って、全てのシートを一括で保護したり解除したりする方法を教えてください。
  • プログラムでの設定以外に、マクロボタンから操作する方法はあるのでしょうか?
  • 大文字や小文字、スペースの入力ミスは設定に影響するのか教えてください。
回答を見る
  • ベストアンサー

エクセルのマクロについて教えてください。

エクセルのマクロについて教えてください。 エクセルの各シートごと一気にシート保護したいという質問に対して下記の回答が来ました。 Sub macro1() ’全シート一括保護 Dim W As Worksheet For Each W In Worksheets W.Protect ("1234") ’パスワード1234 Next W End Sub Sub macro2() ’全シート一括保護解除 Dim W As Worksheet For Each W In Worksheets W.Unprotect ("1234") ’パスワード1234 Next W End Sub 上記はプログラムで全てて入力でやらないとできませんか?マクロボタンから操作して上記のように設定する方法は ありませんか? 英語が苦手です。 また大文字、小文字が間違っても設定はできないのでしょうか?スペースも1行あるのとないのでは 意味が違うのでしょうか? 上記の意味を教えてください。 宜しくお願い致します。

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

  • ベストアンサー
  • classical
  • ベストアンサー率29% (14/47)
回答No.1

 まず前準備として、excel2007以降の場合は、    オフィスボタン ~ 最下部の「excelのオプション」 ~ [開発]タブをリボンに表示する にチェックを付けて下さい。上のタブに[開発]が表示されます。  ちなみに2003以前なら、ツール ~ マクロ です。  次に、開発 or マクロ 画面で、「 マクロの記録 」 をクリック。 すると、マクロに名前を付ける画面になりますので、名づけます。 その際、ショートカットキーは入力してもしなくても可です。  続けて、行いたい処理(全てのシートに対して保護)をした後、同画面で、「記録の終了」をクリックすれば、 今行った処理を自動的にコード化してくれます。  が!(ここから大事)  とても美しいコードにはなりませんし、構文も長くなることから、若干ではありますが処理も遅くなります。  ですので、せっかくサンプルコードを頂いているのですから、別に手入力などせずに、そのまま使うことをお勧めします。 単にコピペすればいいだけなのですから。  以下、コピペのやり方。  上記コードの中から   Sub macro1() ’全シート一括保護    Dim W As Worksheet    For Each W In Worksheets    W.Protect ("1234") ’パスワード1234    Next W   End Sub 選択して、右クリック ~ コピー  2007以降 開発タブ ~ Visual Basic  2003以前 ツール ~ マクロ ~ ステップイン  画面左の 「 プロジェクト - VBAProject 」 の下に表示されているツリーの適当なところで右クリック  挿入 ~ 標準モジュール  「module1」 というのができるので、Wクリック or 右クリック ~ コード表示  空白のwindowが立ち上がるので、そこで    右クリック ~ ペースト  続いて同じやり方で、標準module2を作成し、 sub macro2() ~ end sub  をコピペ  で、マクロが実行できます。  がんばって。

関連するQ&A

  • マクロを組むとこんなエラーが出るようになりました

    捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • 一括保護のマクロにパスワードをかける方法

    エクセル作った表、20シートを一括保護・解除をマクロを使い(どなたかの回答をコピーして)作成しました。保護・解除はできたのですが、このマクロにパスワードをかけ、保護の解除が他の人に出来ないようにしたいのですが、どのようにすれば良いのでしょうか? つかったマクロは・・・ 『保護』 Sub シートの保護() 'Dim~として変数を宣言する Dim myWS As Worksheet 'myWSを「ワークシート」として宣言 'ブック中のシート全部を1枚ずつ以下の作業を繰り返す For Each myWS In Worksheets With myWS 'myWSで .EnableSelection = xlUnlockedCells 'ロックしていないセルを選択出来るように .Protect '保護する End With 'With myWSに対する締め Next myWS 'Forに対応するもの End Sub 『解除』 Sub シートの保護解除() Dim myWS As Worksheet Application.ScreenUpdating = False For Each myWS In Worksheets myWS.Unprotect Next myWS Application.ScreenUpdating = True MsgBox "シート保護解除しました。" End Sub 『Workbook』 Private Sub Workbook_Open() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect End With Next myWS End Sub この3つです。VBA初心者で、わかりにくい説明ですが、よろしくお願いいたします。

  • マクロで保護をかけているけど、幅の変更ができない

    マクロ初心者です。 複数のシートに下記の様なマクロで保護をかけています。 Sub シートの保護() Dim myWS As Worksheet For Each myWS In Worksheets With myWS .EnableSelection = xlUnlockedCells .Protect Password:="****" End With Next myWS End Sub マクロで保護がかかっている状態で、高さや幅を変更したいのですが、 どのようにマクロを変更すれば良いのかわかりません。 教えていただけますでしょうか?

  • マクロ・複数シートに適用するには?

    初心者です。以下のマクロを組みました。 これを複数シートに適用するにはどうしたらよいのでしょうか? worksheets selectではうまくいきませんでした>< 具体的には1~80までのシートが数字で分けられており、 「目次」と「新規」以外の全てに適用したいです。 Sub Macro3() Dim sl As String Dim mySht As Worksheet sl = Range("A65536").End(xlUp).Address Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True For Each mySht In Worksheets Next End Sub

  • エクセルVBAで保護したシート内の書式設定を可能にしたい

    お世話になります。 『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。』というマクロを組みました。 その後、 シートがたくさんあるので、VBAを使って、一度にシートの保護、非保護を行いました。 以下はその記述文です。 Sub 保護() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Protect Password:=111 Next End Sub Sub 保護解除() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Unprotect Password:=111 Next End Sub この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、 「色が変わる」という設定がエラーになります。 どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。 ご教示お願いいたします。

  • マクロで複数のシートを保護&パスワードをかける為に下記式を作成しました

    マクロで複数のシートを保護&パスワードをかける為に下記式を作成しましたが エラー”400”のみ出て上手く行きませんでした。 どこか式がおかしいのでしょうか。。。 一応式を入力しておきます。 超初心者でまったく意味がわからないので、どなたか宜しくお願い致しますm(__)m Sub AllProtect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Protect Password:=1234 Next End Sub Sub AllUnprotect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Unprotect Password:=1234 Next End Sub

  • エクセルのマクロについて教えていただきたいのですが・・・

    見積書を作成しているんですが、1枚目のシート(見積書)に明細が書ききれなかった時に、マクロを実行すると、『明細書』と言う名前のシートが(1)~(5)枚目まで追加され、各シートの小計を1枚目のシートに書き出す・・・と言うマクロを作りたいのですが、うまくいかずに困っています>< 追加されるシートの元となる『見積もりマスター』と言うシートがあって、そのシート内でそれぞれのシートの小計は取れるのですが・・・ 下記のマクロの中に何か追加すればうまくいく方法はありますか?? (明細書は追加する時もあれば追加しない時もあってその都度、使う人が、最大5枚まで何枚追加するかを決めるそうです。) Sub Macro1() Dim cnt As Integer Dim wkNum As Double Dim ws As Worksheet  For Each ws In Worksheets   If Left(ws.Name, 4) = "明細書(" Then    If IsNumeric(Mid(ws.Name, 5, 1)) Then     wkNum = Val(Mid(ws.Name, 5, 1))     If cnt < wkNum Then      cnt = wkNum     End If    End If   End If  Next ws  If cnt >= 5 Then   MsgBox ("明細書シートが既に5枚以上あるため追加できません")   Exit Sub  Else   Sheets("明細マスター").Copy after:=Sheets(Worksheets.Count)   ActiveSheet.Name = "明細書(" & cnt + 1 & ")"  End If End Sub マクロ自体をあまり理解できてなくて、会社の人や、ここで教えていただいて進めているので、出来ればそのままコピーして使用できるようにしていただけるとありがたいです。 よろしくお願いします。

  • Worksheet Worksheets オブジェ

    「Worksheetオブジェクト」と「Worksheetsオブジェクト」は何が違うのでしょうか? 使い方もいまいちわかりません。 この二つを使う時は、 Sub test1() Dim w As Worksheet For Each w In Worksheets Debug.Print w.Name Next End Sub とするときなのですが、 なぜ、変数の宣言をする時は、Worksheetを使い、 ワークシートの数を数える時は、Worksheetsを使うのでしょうか?

  • エクセルVBAで

    全シート保護(保護の解除)のコードなんですが、パスワードを求めない形にするには下記をどうすれば良いのですか? Sub 全シート保護の設定() Dim Sh As Worksheet x = Application.InputBox("パスワードを入力して下さい", Type:=3) For Each Sh In Worksheets Sh.Protect (x) Next Sh End Sub Sub 全シート保護の解除() Dim Sh As Worksheet On Error GoTo ErLine Do x = Application.InputBox("パスワードを入力して下さい", Type:=3) Loop While x = "False" For Each Sh In Worksheets Sh.Unprotect Password:=x Next Sh Exit Sub ErLine: y% = MsgBox("パスワードが違います ! 終了します", 48) End Sub 毎度すみませんがよろしくお願いします。

  • 【マクロ】エクセル 複数のsheet ファイル分け

    いつもお世話になります。 エクセル2003で、下記記述のマクロにて、 一つのファイルにまとまった3つのsheetを個別の ファイルにするよう、使用してました。 エクセル2013でもこのマクロは利用できるのですが、 xlsでなく、xlsxで作成されてしまうため、 どのようにこのマクロを書き変えると、xlsで実行される ようになりますでしょうか。 この記述以外でも問題ございません。 どうか、どなたかお知恵を拝借できると幸いです。 マクロ----------------------- sub macro1() dim s as worksheet for each s in worksheets s.copy activeworkbook.saveas s.name activeworkbook.close false next end sub --------------------------

専門家に質問してみよう