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

エクセルファイルを保存する際に別ブックに用意してあるパス一覧から同じファイル名のパスを選択して設定保存することは出来ますでしょうか? 固定のパス設定までは検索して出来ましたが、ファイルごとに違うパスを設定したいのですが、方法が分かりませんでした。

よろしくお願いします。

A 回答 (4件)

パスワードを設定したブックを納入先に送るということは、そのブックにマクロが含まれているのは、まずいですよね?


そうすると必然的にパスワード一覧ブックの方にマクロを作ることになります。

次のマクロは、アクティブなブックにパスワードを設定します。
具体的には、以下のような使い方になります。
①納入ブックとパスワード一覧ブックを開き、納入ブックをアクティブな状態にする
➁Alt+F8キーでマクロ一覧を開き、「パスワード設定」マクロを実行する
③納入ブックを保存する
※アクティブなブックにパスワードを掛けてしまうので、気を付けてくださいね。

ちなみに、納入ブックのSheet1のA1セルに固有名称が入力されていて、それに対するパスワードの対応表がパスワード一覧ブックのSheet1のA:B列に入力されているものとします。
マクロは、固有名称をキーに、VLOOKUP関数でパスワードの対応表を検索しますので、対応表の作成も忘れないでください。

もし、集計作業をマクロで実行しているのであれば、そこに組み組み込んだ方が便利かもしれません。

Sub パスワード設定()
Dim kw As Variant
Dim pw As Variant
kw = ActiveSheet.Range("A1").Value
With ThisWorkbook.Sheets("Sheet1")
On Error Resume Next
pw = WorksheetFunction.VLookup(kw, .Range("A:B"), 2, False)
If Err.Number = 0 Then
MsgBox "パスワード " & pw & " を設定しました。"
ActiveWorkbook.Password = pw
Else
MsgBox "該当するパスワードがありません。"
End If
End With
End Sub
    • good
    • 1
この回答へのお礼

早速の回答をいただき、ありがとうございます。
この方法なら思っていたものになりそうですね。
試してみます。
結果は後日ご報告させていただきます。
ありがとうございました。

お礼日時:2016/12/24 18:35

すいません。

具体的に何が分からないのでしょうか?
「固定のパス設定までは出来た」とのことですが、たぶん、次のようなマクロですよね?
このマクロを実行した後、普通に保存すれば、パスワード保護された状態で保存されます。

Sub sample()
ThisWorkbook.Password = "abc"
End Sub

保存するファイルのA列に名称文字が入っていて、それに固有数字を付加してパスワードを生成する方法が分から何でしょうか?
固有数字を何にするかにもよりますが、例えば、保存した日付(月日)4桁とする場合は、こんな感じで十分でしょう。
ちなみに、名称文字が入力されているシートは非表示にしておくべきです。

ThisWorkbook.Password = Sheets("Sheet1").Range("A1") & Format(Now, "MMDD")

最初の質問では、パスワード一覧のブックを別に用意して、そこから取得するようなことが書かれていましたが、例えば、VLOOKUP関数でパスワード一覧から値を取得するようなシートを用意しておけば、難しいことを考えなくても実装できるような気がします。当然、そのシートも非表示が前提です。
    • good
    • 1
この回答へのお礼

質問の仕方がへたで申し訳ありませんでした。
何がしたいかという点では、毎日エクセルで集計したデータを複数の納入先に報告をするので、
納入先別にパスを付ける必要があり、そのパスは一度決めたら同じパスを毎日使うので一覧表で現在管理してます。
それを社内のイントラネット内で共有して使用してます。納入先別のパスを一覧から探す手間を削減したいということから考えた方法です。

>保存するファイルのA列に名称文字
これは、パスを最初に決める際に固有の名称をファイル内の名称を使用する方法もあるかなと思ったしだいです。

また、最初のご質問でありましたが、作業するPCは複数のPCを数人で使用することを想定してます。

お礼日時:2016/12/24 10:29

こんにちは。



>保存するファイルのA列などに個々の名称などを入れるので指定のセルにあるその名称文字+固有の数字などを作成するようなことは不可でしょうか。差し支えなければお教えください。

最初に、「パス」というのは、Path のことではなく、PassWord のことですね。それが違うと、まったくコードが違います。

もし、そうなら、とても、良いアイデアだと思います。以前、似たようなものを作った覚えがありますが、その時のものよりも、遥かにすぐれたアイデアだと思います。
そのマクロでなければ、絶対に開けられないようなものも可能になります(それは、暗号システムを導入するわけですが、特別なアルゴリズムが必要になります)が、今の掲示板では、せいぜい1週間ぐらいまでで、長くは引っ張れませんので、簡易的なものを提示します。ただ、万が一の失敗はあると、開かなくなってしまいますので、その都度、Openの際に秘密裏にバックアップを取るようにしたほうがよいかもしれませんね。

ご質問の内容とは、意味合いが違うかもしれませんが、こんなものを考えてみました。
ファイルの一覧から、一気に、プロテクトをして保存してしまいます。
添付画像のシートの画面のように、乱数(固定しています)から、順位を取り、番号を決めています。それぞれのセルには、「空白(半角・全角)を問わず、いれないようにしてください。

なお、以下のマクロは、万が一、乱数が変化するようでしたら、総当り制でなくては開けられなくなってしまいます。

'標準モジュール
Private Const mPATH As String = "C:\Test2\"  '最後尾には必ず¥をいれてください。
Sub ProtectingMacro()
 '初期設定(プロテクトするマクロ)
 Dim c As Variant
 Dim i As Long
 Dim mPassWord As String
 Dim wb As Workbook
 Application.ScreenUpdating = False
 For Each c In Range("A2", Cells(Rows.Count, 1).End(xlUp))
  If Dir(mPATH & c.Value) <> "" Then
    On Error Resume Next
    Set wb = Workbooks.Open(mPATH & c.Value, , , , "", "")
    If Err.Number <> 0 Then
     Debug.Print c.Value
     GoTo Step2
    End If
    mPassWord = c.Offset(, 1).Value & c.Offset(, 2).Value & c.Offset(, 3).Value
    Application.DisplayAlerts = False
    wb.SaveAs mPATH & c.Value, , mPassWord, mPassWord
    Application.DisplayAlerts = True
    i = i + 1
    wb.Close False
  End If
Step2:
 Next c
 Application.ScreenUpdating = True
 MsgBox i & "個のファイルをプロテクトしましたが、ファイルを直接確認するか、イミディエイトウィンドウを御覧ください。"
End Sub
Sub openSesami()
'個別に開ける
Dim Rng As Range
Dim mPassWord As String
If TypeName(Selection) = "Range" Then
  Set Rng = ActiveCell
  If Rng.Value = "" Then
  MsgBox "ファイル名のある所にカーソルを置いてください。", vbCritical
  Exit Sub
  End If
  mPassWord = Rng.Offset(, 1).Value & Rng.Offset(, 2).Value & Rng.Offset(, 3).Value
  On Error Resume Next
  If Dir(mPATH & Rng.Value) = "" Then MsgBox Rng.Value & "がありません。", vbCritical: Exit Sub
  Workbooks.Open mPATH & Rng.Value, , , , mPassWord, mPassWord
  If Err.Number <> 0 Then
   MsgBox Rng.Value & "のオープンに失敗しました。", vbExclamation
  End If
 End If
End Sub
「マクロ 自動でパスワード及び指定のセル内」の回答画像2
    • good
    • 0
この回答へのお礼

返事が遅くなりました。ご丁寧にありがとうございました。
まずは試してみたいと思います。
わからないことがあればまた質問させていただきたいと思います。

お礼日時:2016/12/24 10:15

すいませんが、回答ではありません。

確認です。

「固定のパス設定までは出来た」とのことですが、どんな感じで作られたのでしょうか?
たぶん、マクロだと思いますが、この仕組みってsabchiさんだけが使うのでしょうか?他の人も使うとなると全員がマクロを実行して保存してくれる保証が無いですよね?その辺、どのように徹底するつもりですか?

もうひとつ…。一般的に一覧で管理しているようなパスワードって、数が多いし複雑なので、覚えていられないですよね?なので、開く時はパスワード一覧を都度確認することになると思います。もしかして、オープン用のマクロも作成するのでしょうか?
    • good
    • 0
この回答へのお礼

まずは、ありがとうございます。
説明が足りずすみませんでした。
使用環境の想定としては、自分以外も使用する事を想定しております。
使い方は共有しますので、マクロの実行は出来ると思います。
そもそも無理難題でしたら申し訳ございません。
保存するファイルのA列などに個々の名称などを入れるので指定のセルにあるその名称文字+固有の数字などを作成するようなことは不可でしょうか。差し支えなければお教えください。

お礼日時:2016/12/20 15:14

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A