• 締切済み

自前設定マクロはセキュリティー上、問題ないのか?

セル内に256文字以上の文字を入力する場合、以下のマクロ設定を行ないますが、マクロセキュリティが”高”に設定している場合、送信先にて開いた場合、マクロが無効となってしまいます。 もちろん、セキュリティを低に下げても良いのですが、本当に大丈夫かという確証がありません。(大丈夫であれば、セキュリティを下げて運用せざるえないのでしょうか。) もし、セキュリティーを”高”の状態で以下のマクロ設定が無効になったりしないようにすることはできるのでしょうか。教えてください。 また、セキュリティーを下げるしかない場合は、それでなんら問題ないのでしょうか(なぜ、マイクロソフトは「推奨しない」とわざわざ記載しているのでしょうか。運用する皆さんが心配性なので教えてください) :********************************************** シートタブを右クリック、コードの表示を選択 出てきたシートモジュールにコピペ 表示形式は標準に戻す Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range If Not Intersect(Range("a1:a10"), Target) Is Nothing Then Application.EnableEvents = False For Each Rng In Target Rng.Value = "故障状況" & Rng.Value Next Application.EnableEvents = True End If End Sub **************************************** VBEにてマクロコードをコピーペーストします。 '標準モジュール Option Explicit Sub try()   Dim r As Range   If TypeName(Selection) = "Range" Then     With Selection       .NumberFormat = "general"       For Each r In .Cells         If r.Value <> "" Then           r.Value = "故障状況" & r.Value         End If       Next     End With   End If End Sub

みんなの回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>セキュリティを低に下げても良いのですが、本当に大丈夫かという確証がありません。 なぜセキュリティレベルを設定してマクロを規制する必要があるのか考えれば、答えは出ると思います。 はっきり言って自分で作成したものであれば、どんなマクロであろうとセキュリティレベルを下げて使う事には全く問題はありません。 問題になるのは、未知のマクロの場合です。 どんな動作をするかは実行されるまで全く解らない訳ですから、規制方法が無いと危険な事になります。 また、マクロが安全かどうかを判断する方法がないので「マクロを一律に規制する」事になり、自作のものでも他人作のものでも同様に扱われる事になります。 >セキュリティーを”高”の状態で以下のマクロ設定が無効になったりしないようにすることはできるのでしょうか。 マクロが禁止された状態ではどうやっても何も実行する事は出来ません。 >セキュリティーを下げるしかない場合は、それでなんら問題ないのでしょうか それしか対策はないので、マクロを実行可能な状態にして利用するしかありません。 あとは、未知のマクロを含むファイルは開かないなど、運用面でカバーするしかありません。 >(なぜ、マイクロソフトは「推奨しない」とわざわざ記載しているのでしょうか。 マクロウィルスに感染する確率が高まるので「(メーカーとして)推薦できる設定ではない」としているのでしょう。 >運用する皆さんが心配性なので教えてください このマクロは安全なので問題はおきませんと伝えて、あとは先に書いたように、運用面でカバーするしかないでしょう。

Qperson
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • このマクロあっていますでしょうか?よろしくお願いいたします。

    ★sheetA Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$14" And Target.Address <> "$C$19" _ And Target.Address <> "$F$19" Then Exit Sub If Target.Address <> "$R$14" And Target.Address <> "$S$14" _ And Target.Address <> "$T$19" Then Exit Sub Application.EnableEvents = False With Sheets("B") .Range("F14").Value = Range("C14").Value .Range("F17").Value = Range("C19").Value .Range("F20").Value = Range("F14").Value .Range("F23").Value = Range("F19").Value End With With Sheets("C") .Range("F13").Value = Range("R14").Value .Range("F14").Value = Range("S14").Value .Range("F18").Value = Range("T19").Value End With Application.EnableEvents = True End Sub ★sheetB Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$14" And Target.Address <> "$F$17" _ And Target.Address <> "$F$23" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("C14").Value = Range("F14").Value .Range("C19").Value = Range("F17").Value .Range("F19").Value = Range("F23").Value End With Application.EnableEvents = True End Sub ★sheetC Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$13" And Target.Address <> "$F$14" _ And Target.Address <> "$F$18" Then Exit Sub Application.EnableEvents = False With Sheets("A") .Range("R14").Value = Range("F13").Value .Range("S14").Value = Range("F14").Value .Range("T19").Value = Range("F18").Value End With Application.EnableEvents = True End Sub

  • VBA 範囲選択時エラー

    Private Sub Worksheet_SelectionChangeのVBAでA列B列C列でワンクリックで文字が入力できるように設定致しました。 その後、A列からC列を範囲選択してDeleteするとデバック 「実行時エラー  型が一致しません」と出てしまいます。業務上、そのセルのデータは一気に消したいので困っております。どなたか分かる方よろしくお願い致します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range, rng_1 As Range, rng_2 As Range Application.EnableEvents = False Set rng_1 = Range("H17:H100") Set rng_2 = Range("I17:I100") Set rng_3 = Range("J17:J100") Set rng_4 = Range("K17:K100") Application.EnableEvents = True Set rng = Intersect(Target, rng_1) If Not rng Is Nothing Then Cancel = True If Target.Value = "" Then Target.Value = "(1)" Else Target.Value = "(1)" End If Else Set rng = Intersect(Target, rng_2) If Not rng Is Nothing Then Cancel = True If Target.Value = "(2)" Then Target.Value = Empty Else Target.Value = "(2)" End If Else Set rng = Intersect(Target, rng_3) If Not rng Is Nothing Then Cancel = True If Target.Value = "(3)" Then Target.Value = Empty Else Target.Value = "(3)" End If Else Set rng = Intersect(Target, rng_4) If Not rng Is Nothing Then Cancel = True If Target.Value = "(4)" Then Target.Value = Empty Else Target.Value = "(4)" End If End If End If End If End If End Sub

  • マクロ実行後に操作を元に戻したい

    自作の時間割変更プログラムを使っています。 次のマクロを何度か実行した後に一つずつ元に戻したいのですが。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Rng As Range Dim m, n, s On Error Resume Next If Selection.Count <> 2 Then Exit Sub m = ActiveCell.Value n = ActiveCell.Interior.ColorIndex For Each Rng In Selection If Rng.Address <> ActiveCell.Address Then ActiveCell.Value = Rng.Value ActiveCell.Interior.ColorIndex = Rng.Interior.ColorIndex Rng.Value = m Rng.Interior.ColorIndex = n End If Next Rng End Sub 時間割のコマを移動した後に間違いが見つかり、間違いの時点まで元に戻して訂正したいのですが、Ctrl+zがきかず困っています。 Excel 365、windows 10を使用しています。どうにかなりませんか?

  • 行ごとに保護するマクロにパスワードを付けたい

    Excel2010を使用しております。 A列に「承認」という文字が入ると、その行が保護されるマクロがあります。 今の状態ですと、[校閲]-[シート保護の解除]を押すと解除されてしまいますので 保護を解除する際にパスワードを設定したいのですが上手く行きません。 どうかお助け下さい。宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r, rng As Range Set rng = Intersect(Target, Columns(1)) If Not rng Is Nothing Then If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect End If For Each r In rng If r.Value = "承認" Then r.EntireRow.Locked = True Else r.EntireRow.Locked = False End If Next r ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True End If End Sub

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

    お世話になっております。 エクセルのマクロについて教えていただきたいのですが、 サンプルのファイルをこちらにアップしたのでよろしければご覧になってください。 http://kie.nu/yPV 質問したいことは、列Iに、各行の黄色いセルの数を表示させるマクロを作りたいのですが 途中まで何とかわかったのですがどうもうまくいきません。。 行11から各行にひとつずつ、黄色いセルが含まれていますが、その黄色いセルの中の数字を列Iに表示させたいです。行にデータがある限り、下までずっとです。 以下、途中までわかったマクロです。 Sub 黄セル値Copy() Const TgLeftUp = "A3" '<--対象範囲左上セル指定 Dim Rng As Range Dim Target As Range Set Target = Range(TgLeftUp, Cells(Rows.Count, _ Range(TgLeftUp).Column)) For Each Rng In Target.Resize(, 2) If Rng.Interior.ColorIndex = 6 Then If Rng.Column = Target.Column Then Rng.Offset(, 3).Value = Rng.Value Else Rng.Offset(, 2).Value = Rng.Value End If End If Next MsgBox "値 貼り付け完了。", vbInformation Set Target = Nothing End Sub でもこれを貼り付けてもうまくいきません。 正しいマクロを教えていただけないでしょうか?? 宜しくお願いいたします。 ※いつも、私の質問に対してまるで回答になってないような、ふざけた言葉を書き込んでは消してる方が一名だけいらっしゃいます。確か、鳥の写真をマイページに載せてる方です。 都度違反報告はしていますが、質問の趣旨に反する回答をされてる方一名、絶対にやめてください。

  • 【ExcelVBA】 既にあるマクロの間で実行させたいのです。

    こんにちは 下のマクロを・・・ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "●入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "●" Then Target = "" Else Target = "●" End If End If End Sub このマクロの■ここで実行■で実行させたいのですが、どのようにしたらよいでしょう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$D$1" Then Exit Sub Cancel = True Columns("A:U").Select Range("T1").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Selection.Replace What:="ああ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("D1").Select End Sub ■ここで実行■ Private Sub Worksheet_Change(ByVal Target As Range) strAddress = "A1:A2000" On Error GoTo ErrorHandler If Target.Count > 1 Then GoTo ErrorHandler If Not Intersect(Target, Range(strAddress)) Is Nothing Then Application.EnableEvents = False Range(strAddress).ClearContents Target.Value = "●" End If ErrorHandler: Application.EnableEvents = True End Sub

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • エクセル 数値結果の値によって日付を入れたい

    シート2の2列目にOKが入ると、シート1のC列にOKが入り、更新された日がB列に表示されるようにしたいです。 C列に手入力でOKと入力すればB列に日付が表示されるのですが、C列をVLOOKで呼ぶようにしたら表示されなくなってしまいました。 どのように修正していいのか分かりません。 お教えいただければと思います。よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Dim TgRng As Range Set TgRng = Intersect(Range("C1:C2000"), Target) If Not TgRng Is Nothing Then Application.EnableEvents = False For Each Rng In TgRng If Rng.Value = "OK" Then Rng.Offset(, -1).Value = Date End If Next Application.EnableEvents = True End If Set TgRng = Nothing End Sub

  • マクロで二つの構文を繋ぐには

    いつもお世話になります。 WIN7 EXCELL2010 です。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ThisWorkbook に上記のマクロに下記のマクロを追加したいのですが、 End Sub の ところを End If End With などに変えたのですがうまくゆきません。 御指導お願いできませんでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("M3:V27")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "●" Case Else Target.ClearContents End Select Cancel = True End If End Sub 宜しくお願いいします。

  • エクセル マクロ 初心者です

    エクセルマクロ初心者です。 以下の2つの Private Sub Worksheet_Change(ByVal Target As Range)を1つのシートで実行させたいのですが、 当方、初心者なので組み合わせ方が分かりません。 よろしくお願いします。 ===No1=== Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = StrConv(Target, vbUpperCase) Application.EnableEvents = True End Sub ===No2=== Private Sub Worksheet_Change(ByVal Target As Range) Dim Ans As Integer If Target.Count = 1 Then Ans = MsgBox("コピーは禁止!!", vbCritical) MsgBox "データを消去します。" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If If Target.Count = 1 Then Exit Sub Else MsgBox “複数セルのコピー禁止!" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub ------------ 上記の2つを1つのシートで動作させたいのですが、うまくいきません。 単体では、動作します。

このQ&Aのポイント
  • Androidスマホにはペアリングできるが、iPad mini 5とPCにはペアリングできない問題が発生しています。電源やBluetoothの設定をリセットしてもデバイスが表示されない状況です。
  • エレコムの完全ワイヤレスBluetoothヘッドホン(モデル名:LBT-TWS10BU)を使用していますが、iPad mini 5とPCとの間でペアリングができません。Bluetoothの設定をオフにしてから再度試してみましたが、デバイスが表示されません。どうしてペアリングができないのでしょうか?
  • エレコムの完全ワイヤレスBluetoothヘッドホンを使用していますが、iPad mini 5とPCとの間でのペアリングができません。電源やBluetoothの設定を切り替えてみましたが、デバイスが表示されません。解決策を教えてください。
回答を見る