2

ボタンをクリックしたときにデータを検証するためのマクロを含むテンプレートがあります。1枚のシートのみがあり、そのファイルにシートが追加されていないテンプレート(1枚のシートのみが含まれている必要があります)。ここで、マクロを有効にせずにファイルを開いた場合、画像を表示する必要があります。それ以外の場合は、マクロを有効にしてください。表示する必要はありません。

助けてくれてありがとう。

4

1 に答える 1

6

シートでマクロを有効にするようにユーザーに強制する方法は?

あなたの質問への答えは「あなたはできない」です

ただし、ここにケン・プルスによる代替案があります。これはあなたの目的にぴったりです。

トピック:ブックでマクロを有効にするようにユーザーに強制する

リンクhttp ://www.vbaexpress.com/kb/getarticle.php?kb_id = 379

そのリンクからの引用

マクロを使用してマクロをオンにする方法はないため、ユーザーがマクロを有効にしていることを確認する手法が望まれます。この特定のメソッドは、ユーザーにマクロを有効にするように指示する「ウェルカム」シートを除くすべてのシートを非表示にし、ブックが保存されるたびに適用されます。ユーザーがマクロを有効にしてブックを開くと、シートはすべてマクロによって非表示になります。シートの非表示もExcelのVeryHiddenプロパティを使用して実行されます。つまり、Excelのメニューを使用してシートを非表示にすることはできません。ただし、これはこのブックにのみ影響するため、ユーザーは別のブックのマクロを使用してすべてのシートを再表示できることに注意してください。ただし、ユーザーがそれほど熟練している場合は、とにかくいつでもファイルにアクセスできる可能性があります。注:一部のイベントループの問題を防ぐために、このコードではExcelを上書きする必要があります。■組み込みの保存イベントであり、Excelの「ブックが変更されました。保存しますか」というプロンプトとアクションを複製する必要があります。このコードはすべてを処理します。ただし、ファイルを閉じるときに非常に小さな問題が発生します。ユーザーがアプリケーションを終了しようとすると、ブックは閉じられますが、Excelは閉じられません。もう一度終了すると、Excelが完全に閉じます。

ファローアップ

ワークブックを閉じる前に、次の手順を実行してください

  1. 新しい行を挿入します
  2. 行の高さを増やします
  3. 残りの行を非表示にする
  4. 関連する場所で画像のサイズを変更して移動する

そして、あなたが開くとき、上記の逆をしてください

  1. 残りの行を再表示します
  2. 1行目を削除します
  3. サイズを小さくして、画像をシートの左端の位置に移動します

重要

シートに画像を配置したら、画像を右クリックして[画像のフォーマット]をクリックします。で、というオプションをFormat Picture Dialog選択してオフにします。Don't move or size with cellsPrint Object

ここに画像の説明を入力してください

ワークブックを閉じるときのコード-上記のリンクに示されているのと同じ概念を適用します

Dim shp As Shape

With Sheets("Sheet1")
    .Rows(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .Rows(1).RowHeight = 300

    .Rows("2:" & .Rows.Count).EntireRow.Hidden = True
    Set shp = .Shapes("Picture 1")
    With shp
        .Top = Sheets("Sheet1").Range("A1").Top
        .Left = Sheets("Sheet1").Range("A1").Left
        .LockAspectRatio = msoFalse
        .Height = 100
        .Width = 100
    End With
End With

ワークブックを開くときのコード-上記のリンクに示されているのと同じ概念を適用します

Dim shp As Shape

With Sheets("Sheet1")
    .Rows("1:" & .Rows.Count).EntireRow.Hidden = False
    .Rows(1).Delete

    Set shp = .Shapes("Picture 1")
    With shp
        .LockAspectRatio = msoFalse
        .Height = 0
        .Width = 0
        .Top = Sheets("Sheet1").Range("A1").Top
        .Left = Sheets("Sheet1").Range("IV1").Left
    End With
End With

注:上記のコードで"Sheet1"、関連するシート名に置き換え"Picture 1"、関連する画像名に置き換えます。セルに画像を表示していA1ます。これを修正して、Shapeを調整すること.Topで、好きな場所に画像を表示できます。.Left

マクロが無効になっている場合のスナップショット

ここに画像の説明を入力してください

于 2012-06-20T04:05:46.390 に答える