たっぴ(パソコン質問掲示板)

ログイン

メニュー
■ トップ
■ 質問する
■ 回答を見る・回答する
■ 参加者のひろば / テーマ別
■ コミュニケーション道場
■ 「たっぴ」の使い方
■ 「たっぴ」のルール・心得

エキスパート トータルランキング
Rank ニックネーム E-Point
1 位 sriver 1372 p
2 位 げんき(^^)/ 810 p
3 位 うにゅ 607 p
4 位 mory 512 p
5 位 saru 510 p
6 位 Clark 481 p
7 位 taknt 474 p
8 位 459 p
9 位 あき◆ 387 p
10 位 おやぢ 366 p
※月間ランキング参加者がありませんでした。



E-Point還元プログラム
E-Point 月間獲得ポイントより回答者様へ現金を還元いたします。

対象還元金額
全員に(E-Point)×20円
支払いは5,000円以上からとなります。
還元金の支払いはご指定銀行口座への振込みとなります。

『マナーの良い質問者』マーク
以下の条件を満たす質問者様には
  『マナーの良い質問者』マーク

が付きます。
  1. 登録していて
  2. 「終了」していない質問がひとつ以下で
  3. 終了した質問で「○○○○○」という言葉の投稿がある
3番目の条件はひらがなです。もうお判りですね。(漢字、カタカナもOKかも。。。)
ぜひマークをGetしてください。









《戻る

No.質問・回答おれい
[88706] シート保護パスワード解除について
OS: Windows XP
ソフトウェア名/バージョン:Excel2003
ハード機種名/型番:
エラーメッセージなど:
その他:

サーバーにあるエクセルのブックに、3枚シートがあって
そのうち1シートを他人に触って欲しくないので、シート保護をかけました。(パスワードあり)
しかし、頻繁に編集するのでパスワードを毎回解除するのは面倒です。ユーザーでブックの属性をわけたりすることはできますでしょうかぁ!?

マクロでできるなら、コードを教えてください!!

お願いします!
つるまる (未登録)   2006年11月13日23:18


[88716] こんな感じかな

Sub 保護()
 ActiveSheet.Protect Password:="123"
End Sub

Sub 解除()
 ActiveSheet.Unprotect Password:="123"
End Sub

VBAを見ることができるのでパスワードばれちゃいますけど

mit56 (340)    2006年11月14日09:06


[88717] 自動化するならこんな感じかなと。

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal Buffer As String, Size As Long) As Long

Sub AutoOpen()
GetUserName()でログインユーザ名を取得
「つるまる」ならパスワード解除
End Sub

Sub AutoClose()
パスワード保護
End If

VBAのプロジェクトにも、プロパティでパスワードをかけられます。
こっちはシートを開くたびに見るということはないですよね。
mio (107)    2006年11月14日09:30


[88730] mit56(10)さん mio(65)さん ありがとうございます。
mio(65)さんの方法で作ってみたのですが、できませんでした・・・・
失礼です、もうひとつ教えて頂きたいです!

◎[Sheet1][Sheet2][Sheet3] 
◎パスワード[abc]
◎書き込みを許可したいウィンドウズアカウント[tsurumaru]
◎書き込みを禁止したいウィンドウズアカウント[warumaru]

上記の条件で、具体的なコードを教えていただきたいです。

それと、サーバーがLINUX等でもコードは有効ですかぁ!?
つるまる (未登録)   2006年11月14日20:15


[88744] >ですかぁ!?
というような聞き方を繰り返しされて、答える気になる人はあんまりいません。
mio (107)    2006年11月15日10:02


[88788] 質問に答えて頂いているのに失礼な質問の仕方を繰り返して申し訳ないです。
つるまる (未登録)   2006年11月16日01:06


[88789] 本日もコードを作成したのですが、思い通りできませんでした・・・・
失礼と承知しているのですが、ご教授お願いいたします。
つるまる (未登録)   2006年11月16日01:10


[88798] >思い通りできませんでした・・・・
どういう調べものをして、どういうものを作って、どんなエラーが出たんですか?
質問するにしても、まず自分の作ったものを載せてみて、どこがまずいのかを考えるべきです。
人のコードのコピペではなんの力にもなりません。
mio (107)    2006年11月16日13:46


[88813] 度重なる失礼すいません。
下記にソースを記載いたします。おかしい場所を教えて頂きたいです。[88730]と同じ条件で実行しました。

下記のソースで実行すると、どのアカウントで入ってもパスワードがかかってしまいます。おそらく
==============Sheet1 ソース==============
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal Buffer As String, Size As Long) As Long

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Dim UserName As String
Dim ReturnAPI As Long

UserName = Space(20)

ReturnAPI = GetUserName(UserName, Len(UserName))

If UserName = "tsurumaru" Then
Sheet1.Unprotect Password:="abc"
Else
Sheet1.Protect Password:="abc"
End If

End Sub
====================================

==============ThisWorkBooソース==============

Private Sub Workbook_Open()
ActiveSheet.Protect Password:="abc"
End Sub

====================================





つるまる (未登録)   2006年11月16日21:06


[88822] これは、Win32API(C言語で使われることを想定)の文字列とVBの文字列との違いによるものです。
VBでのGetUserNameの使い方を検索してみると分かりますが、戻ってきたUserNameをそのまま使うことはできません。
あと一歩(1行追加)です。頑張ってください。
mio (107)    2006年11月17日10:34


[88827] mio(65)さん、ありがとうございます。
バンザーイ!

お蔭様でNULLを消すコード一行で完成いたしました。
お世話になりました。
つるまる (未登録)   2006年11月17日19:10


[88834] 良かったです。
自分で調べて完成させると、気持ちが違いませんか?
コードをまるまる教えてもらっていたら、そういう気持ちにはなれなかったと思いますよ。
mio (107)    2006年11月17日21:05


( 参照数:2425   日平均:0.4 )
 
〜 回答の受付を終了しました 〜


回答、お礼・報告などメッセージの追加

ニックネーム:

まったく新しい内容の質問、質問者以外の方の質問は、メニューの「質問する」から新たに質問してください。

詳細: 内容を詳しく言うと。。。

※「たっぴ」に登録すると質問にポイントが付けられます。 その他便利な機能も使えます!》新規登録 》Help

※http://.....は自動的にハイパーリンクに変換します。
※<pre></pre>が使用できます。     ※引用は行の先頭に「>」を付けてください。自動的に色が付きます。




利用規約 特定商取引に関する法律に基づく表記 プライバシーポリシー 問合せ