そもそもマクロとはエクセルの標準機能の一つで、単純で簡単なものから複雑なものまで作成することができます。 たとえばマクロを使用すると、資料作成の一部や全てを自動化したり、ファイルを開いたときに状況に合わせて計算やレイアウトを変更したりすることができます。 まさにエクセルでの作業負担を軽減化してくれる機能ですから、使いこなせれば作業の効率化も可能です。 そんな便利なマクロを含んだファイルを開くと、セキュリティ警告が表示されることがあります。 初めてマクロファイルを開いたときは必ず表示されるはずです。 この警告はエクセルのマクロ有効化の初期設定が「無効」のために表示されます。 当記事ではこのマクロ有効化の設定を切り替える方法を解説していますが、まずなぜ初期値が「無効」であるかを知っておきましょう。 1-1. 初期設定が無効の理由 エクセルのマクロ有効化の初期値が「無効」であるのは、マクロが完全に安全なものではないためです。 プログラミングは難しくて遠い話と思っていれば、驚いてしまうかもしれませんが、マクロも立派なシステム開発言語です。 この言語を使用してプログラムを組み、インターネットに繋ぎ、情報を取得することもできますし、情報を作成して書き込むこともできます。 大体のことは「何でもできる」のですが、便利で身近なため、悪用されることが多いツールでもあります。 分かりやすい悪用の例だと、エクセルにマクロを使用してウイルスを仕込み、ファイルを送信して相手がファイルを開くと、マクロが動いて相手の端末をウイルス感染させてしまうというような方法です。 このような場合にマクロがウイルス感染源となっているのですが、ほとんどの場合マクロが起動しなければこのウイルス感染方法は食い止めることができます。 だからマクロ有効化の初期設定は「無効」で、マクロを含むファイルを開くとその都度「このファイルは信頼できる発行元のものですか」や「マクロを有効化しても大丈夫ですか」と警告してくれるのです。 これからマクロ有効化の手順をご紹介しますが、なるべくエクセルのセキュリティ設定は無防備にせず、警告を表示するよう設定したほうがよいでしょう。 ファイルを開いたときに表示されるメッセージバーのボタンを押してそのファイルのマクロを有効化する方法• Backstageビューという[ファイル]タブを押したときに表示されるエクセルの設定を変更する方法• セキュリティセンターからエクセル自体のマクロに対するセキュリティ設定を変更する方法 以上の3つの方法をみていきます。 状況次第でどの方法がよいか見極めて、マクロの有効化を切り替えてください。 2-1. メッセージバーから変更する マクロを含んだファイルを開いたときに、メッセージバーが表示されることがあります。 「セキュリティの警告 マクロが無効にされました」という黄色いメッセージバーです。 メッセージの横に「コンテンツの有効化」というボタンがありますので、このボタンを押すとマクロが有効になります。 この方法ではメッセージのボタンを押したファイルのみマクロが有効になります。 有効化していない他のファイルでは、同じようにセキュリティの警告が表示されます。 一度マクロを有効にしたファイルは、次に開いたときはすでに有効のままとなっています。 ただしファイルをコピーしたり、フォルダを移動したりした場合は再度警告が表示されます。 もしマクロを一度きり有効にしたい場合は、「コンテンツの有効化」ボタンを押さずに「2-2-1. 1回だけマクロを有効にする方法」をご覧ください。 2-2. Backstageビューから変更する Backstageビューは[ファイル]タブを選択したときの画面です。 セキュリティの警告が表示された場合に、このビューを開くと「セキュリティの警告」という項目が表示されます。 セキュリティの警告の左横の「コンテンツの有効化」を押すと、「すべてのコンテンツを有効にする」と「詳細オプション」が表示されます。 「すべてのコンテンツを有効にする」を選択すると、このファイルでマクロが有効になります。 2-2-1. 1 回だけマクロを有効にする方法 もしファイルを開いた1回だけマクロを有効にしたい場合、セキュリティの警告が表示されたままBackstageビューを開き「コンテンツの有効化」から「詳細オプション」を選択します。 表示された「Microsoft Office セキュリティ オプション」で、「このセッションのコンテンツを有効にする」を選択して「OK」を押すとマクロが有効になります。 こうすることで同じファイルを開いた場合、再びセキュリティの警告が表示されます。 2-3. セキュリティセンターから変更する マクロの設定はエクセルのセキュリティセンターから変更することもできます。 ただしここから変更できない場合は、システム管理者が個人での設定変更を許可していないことが考えられ、システム管理者から設定を変更してもらう必要があります。 セキュリティセンターは[ファイル]タブの「オプション」を選択して開きます。 開いた画面の「セキュリティセンターの設定」ボタンを押して、更に「セキュリティセンター」画面を表示します。 「マクロの設定」の設定を変更することで、マクロの有効化の条件が変更できます。 マクロの設定には4つのパターンがあります。 警告を表示せずにすべてのマクロを無効にする これはマクロだけでなく、マクロに関するセキュリティの警告が無効になります。 マクロは絶対に使わない、必要ないという場合のみ使用する設定です。 もしマクロが動かない場合、「警告を表示せずにすべてのマクロを無効にする」に設定されていることがあるので、この設定を確認するとよいでしょう。 反対に無効にしたい場合もこの設定を使用します。 警告を表示してすべてのマクロを無効にする マクロは無効ですが、マクロを含むファイルの場合はセキュリティの警告を表示する設定です。 エクセルの初期設定でもあります。 デジタル署名されたマクロを除き、すべてのマクロを無効にする 「警告を表示してすべてのマクロを無効にする」と同様マクロは無効ですが、マクロを含むファイルの場合はセキュリティの警告を表示する設定です。 ただし、発行元を信頼していない場合、署名付きマクロを有効にして発行元を信頼するように通知されますが、署名がある場合は警告の表示はされません。 すべてのマクロを有効にする 推奨しません。 危険なコードが実行される可能性があります すべてのマクロを警告なしに有効にします。 この設定の場合、悪意のあるファイルに対しても無条件でマクロが有効となるため、パソコンのセキュリティが脆弱になります。 もしセキュリティの警告が表示されない場合は、この設定になっている可能性があります。 Macの場合は[環境設定]の「セキュリティとプライバシー」から同じような設定ができます。 セキュリティセンターの設定はユーザー単位の設定のため、設定後は自動的に全てのファイルに適用されます。 手動で確認したファイルのみ有効になるわけではないため、やはり警告を表示させる設定が推奨されます。 2-3-1. 開発タブの追加方法 セキュリティセンターは[ファイル]タブから開くこともできますが、[開発]タブのボタンから一発で開くこともできます。 [開発]タブの[マクロのセキュリティ]を押すと、セキュリティセンターが表示されます。 [開発]タブはエクセルの初期設定では表示されていないので、以下の手順で表示させます。 まとめ ちなみにマクロを含むファイルは拡張子が「xlsm」か、2003までの古いバージョンならば「xls」です。 (ただし「xls」の場合はマクロなしでも同じ拡張子) これを覚えておけば、拡張子からファイル名を見たときにマクロが含まれているかどうか判断できます。 もしファイル名を見てマクロ付きだと分かった場合、それが知らない人から送られてきたファイルならば気を付けて開きましょう。 セキュリティ設定で全てのマクロを有効にしている場合、ファイルを開いた途端パソコンが止まってしまったり、何も起こらなくても情報を抜き取られたりする場合があります。 もちろんパソコンのセキュリティ自体を高めておき、ウイルス対策がばっちりならば阻止できるでしょう。 ただウイルスは日々進化をしているものです。 最新のウイルスであれば、ウイルス対策も効果がない可能性があります。 そのため慣れ親しんだエクセルだとしても、マクロのセキュリティ設定はよく考慮して設定してください。
次の解決する 解決する Open ステートメントで開いたファイルには、その番号でのみ操作できます。 違う番号を指定すると発生します。 また Windows で不正なファイル名を指定して開こうとしたときにも発生します。 Open を使用しないで「」を使用すると、高機能なファイル操作ができます。 番号を合わせる 「FreeFile 関数」を指定して適切な番号を取得できます。 Open で開いたファイルと違う番号を指定するとエラーが発生します。 Print s Loop Close no Close で閉じたファイルを操作するときにも発生します。 Close にファイル番号を指定しないと、すべてのファイルが閉じられるのでそれが原因のときもあります。 Print s Loop 適切なファイル名にする 記号で始まるファイル名や不正な記号が含まれていると発生します。 txt", ForReading ' エラー、FileSystemObject ファイル名やパスが不正なときは「」や「」が発生することもあります。 エクスプローラーで存在するファイルか確認すると原因がわかります。
次のによると次のようにあります。 存在しない配列の要素を参照しました。 添字が使用可能な添字の範囲外であるか、またはこの時点でアプリケーション内で配列に次元が割り当てられていません。 配列の 宣言で、配列の上限と下限を確認します。 次元が変更された配列を使用する場合は、 UBound 関数および LBound 関数を使用して、配列へのアクセスを調整します。 インデックスが 変数として指定されている場合は、変数名のスペルを確認します。 配列を宣言しましたが、要素数を指定していません。 たとえば、次のコードではこのエラーが発生します。 少しわかりにくいですね。 配列を使用していないのに本エラーが発生する場合もあります。 詳しく見てみましょう。 1つ目はMicrosoftの言うとおり、配列の範囲の指定ミスもしくは配列の添え字の指定ミスです。 配列の要素の最下限を返すLBound関数や配列の要素の最大値を返すLBound関数を使用してその範囲内に添え字を指定しているか調べましょう。 変数で指定している場合は、値をよく見直してみましょう。 Worksheets "Sheet1". Cells 1, 1 End Sub 存在しないシート名を指定してしまった時も本エラーが発生します。 変数で指定している場合は、値をよく見直してみましょう。 シート名に加え、ブックの指定もしている場合は「ブックAにあるシート名をブックBで指定してしまっている」ことが無いかを確認してください。 '「Sheet1」のセルA1の値を表示したかった Sub TestFunc3 '「"Sheeet1"」は誤字で「"Sheet1"」が正 MsgBox Worksheets "Sheeet1". Cells 1, 1 End Sub.
次の