プロが教えるわが家の防犯対策術!

Excel2000でロックしていないセルに画像を貼り付けようと思います。
パスワードでシート保護しています。

VBAで次のように処理したら画像は貼り付けられました。
しかしパスワード入力を求められ、入力すると画像の挿入後シートは保護されたのですが、パスワードは解除になっています。
パスワード解除にならずに画像挿入できる方法をご教示ください。

さらに挿入後のサイズ変更のVBAも併せて教えて頂ければ助かります。
当方VBAについては全くの初心者です。

Sub 画像挿入()

  With ActiveSheet
    'シート保護解除
    .Unprotect
    '画像挿入ダイアログ表示-->画像を挿入
    Application.Dialogs(xlDialogInsertPicture).Show
    '画像が挿入されたら、保護のロック対象外に設定
    If TypeName(Selection) = "Picture" Then
      Selection.Locked = False
    End If
    'シート保護
    .Protect DrawingObjects:=False, Contents:=True
  End With

End Sub

A 回答 (3件)

「1234」のパスワードの場合、


以下のようにしてみてください。

Sub 画像挿入()

With ActiveSheet
'シート保護解除
.Protect Password:="1234", DrawingObjects:=False, Contents:=True, UserInterfaceOnly:=True
'画像挿入ダイアログ表示-->画像を挿入
Application.Dialogs(xlDialogInsertPicture).Show
'画像が挿入されたら、保護のロック対象外に設定
If TypeName(Selection) = "Picture" Then
Selection.Locked = False
End If
'シート保護

End With

End Sub
    • good
    • 0
この回答へのお礼

パスワードが解除にならずに画像が挿入できました。
ありがとうございます。

挿入後の画像サイズの変更はどうすれば良いのですか?

VBAとは便利なものですね。
早速勉強を始めたいと思います。

お礼日時:2009/06/04 11:27

パスワードで保護されたシートの保護を解除する方法


Sheets("シート名").Unprotect ("パスワード")
パスワードでシートを保護する方法
Sheets("シート名").Protect ("パスワード")
画像のサイズを変更する方法の参考として、
複数の写真が貼付されたシートにおいて、写真データのサイズを軽減するためのマクロを記述します。
Sheets(1).Select
A = Sheets(1).Pictures.Count
If A > 0 Then
B = 0
For Each ZZZ In Sheets(1).Shapes
B = B + 1
If InStr(ZZZ.Name, "Picture") > 0 Then
CC = ZZZ.TopLeftCell.Address
CC = Right(CC, Len(CC) - 1)
DD = Left(CC, InStr(CC, "$") - 1)
EE = Right(CC, Len(CC) - InStr(CC, "$"))
F = Asc(DD) - 64
G = Val(EE)
ZT = ZZZ.Top
ZL = ZZZ.Left
ZH = ZZZ.Height
ZW = ZZZ.Width
ZZZ.Cut
Cells(G, F).Select
ActiveSheet.PasteSpecial Format:="図 (JPEG)" 'ActiveSheetが画像です。
Selection.ShapeRange.Top = ZT
Selection.ShapeRange.Left = ZL
Selection.ShapeRange.Height = ZH
Selection.ShapeRange.Width = ZW
Selection.ShapeRange.ZOrder msoSendToBack
End If
If B = A Then
Exit For
End If
Next
End If
    • good
    • 0
この回答へのお礼

なにか難しいですね。
VBAをしっかり勉強してみます。
ありがとうございました。

お礼日時:2009/06/05 09:56

>ロックしていないセルに画像を貼り付けようと


エクセルの場合、画像はセルに中身的に張り付くのではないと思う。
根本的に誤解が有ると思うが。シートは台紙で、画像はその上に浮いている感じ。レイヤーが違うと言うのかな。
住む家のたとえで言えば、画を飾らせていただくため、有る家の軒を使わせていただくが、その場所は(セル番地).Topなどで指定しますが、家の住人になったわけではないと思います。その軒先を借りることが、有る家を使用禁止・許容の中に含まれているか疑わしい。多分含まれてない。
図のファイルからの挿入は、まずアクチブセルが左上に来る形で挿入される。その選択アクチブセルが、画像貼り付け許可範囲かどうかを左右するかどうかも、はっきりわからない。実験してみてください。誰か反論してくれると、私も勉強になるが、色々な事項から
今のところ、そう結論付けている。普通の解説書にはこういう細かいところは書いてないようだ。
====
>挿入後のサイズ変更のVBAも併せて教えて頂ければ助かります。
こんなのはマクロの記録をとってコードとにらめっこして考えればわかるでしょう。マクロの記録を活用した後に質問のこと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
おっしゃっている事がなんとなく解ったような解らないような。

図の挿入はアクチブセルの左上に挿入されました。
シート保護はしてありますが、ロックの掛かっているセルにも移動出来ますしサイズの変更も出来ました。

お礼日時:2009/06/05 09:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!