人に聞けない痔の悩み、これでスッキリ >>

現在AcrobatのOLE Objects and Methodsを使用して、VBにてPDFファイルの作成を行っています。
しかし、”PDFを開くためのパスワード”をかけたいのですが方法がわかりません。おわかりの方お教え下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

    • good
    • 2
この回答へのお礼

ありがとうございました。C++でプラグインを作成すれば可能な様ですので、プラグインを作成するか、別の方法でファイルに対してパスワードをかけるか検討したいと思います。

お礼日時:2003/05/09 08:34

Visual Basicからパスワードをかけるのではなく、PDFファイル自体にパスワードをかけてみてはいかがでしょうか。

この回答への補足

VBにて300程度のPDFファイル作成しております。そのファイルにそれぞれ、別々のパスワードをかけたいのです。

補足日時:2003/05/06 22:38
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。ご回答いただいたのは、VBからではなく、Acrobatのからセキュリティの
メニューよりあらかじめパスワードをかけるということでしょうか。もし、そうであれば、補足に書いた理由により、VBからパスワードの操作をしたいと思っていますが可能でしょうか?

お礼日時:2003/05/06 22:43

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAでPDFにパスワードをかけるには

こんにちは。

Accessを使って作成したデータをメールに添付して送付したいのですが、社内規定でパスワードをかけなければなりません。

今回、Accessで作成したレポートをPDFに出力してメールで送りたいと思っています。送付先の規定でZIPファイルにパスワードをつけたものは受け取れないとのことで、圧縮せずにパスワードをつけなければなりません。

エクセルファイルにはVBAでパスワードをつけることができるのですが、PDFにパスワードをつけるVBAがうまくいきません。社内規定でソフトなどをインストールすることができないため、VBAでパスワードをかける方法をご存知でしたらご教授いただけませんでしょうか。

Access、VBAは独学と諸先輩のものを参考にしてきたので知識は深くありません。
どうぞ宜しくお願い致します。

Aベストアンサー

OfficeのPDF作成機能では、Office2010からWordとPublisherでパスワードが付けられるようになっているようですが、Accessについては記載がありません。ExcelファイルをPDFにする際にはパスワードをつけられないようです。
https://support.microsoft.com/ja-jp/kb/3027688

Accessの生成するレポートのファイル形式が分かりませんが、これをWordで読み込めるフォーマット(例えば.rtf)にして、これをWordでPDFに変換するのであればパスワード付きPDFが生成できるかもしれません。
この手順ならAccessのVBAでWordオブジェクトを制御すればVBAからでも生成できるのではないかと思います。
サンプルコードは……自分も簡単に書けるほど精通していないのでご容赦ください。Access実行環境もないし。

QPDFファイルを開き、印刷し、閉じるマクロ

Excel 2003 VBAにて、
PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。

Dim AA, AAA

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf"
AAA = Shell(AA, vbNormalFocus)

にて、PDFファイルを開くことは出来ました。
このPDFファイルを、「印刷し、閉じる」ためには、
このPDFファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387.aspx

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional prin...続きを読む

Q複数PDFファイルの一括セキュリティ設定

数百のPDFファイルがあるのですが、そのすべてに編集不可だけの設定をしたいと思っています。一括で設定するソフトはあるでしょうか?いまあるPDFファイルはセキュリティが全く設定してありません。

Aベストアンサー

アクロバットで可能です。5.0で回答させてもらいます。
アクロバットを起動→ファイル→バッチ処理→バッチシーケンスの編集→新規シーケンス→適当に名前入力→コマンドの選択→下のほうの文書のセキュリティを選択→追加→追加したセキュリティを選択→編集→セキュリティオプションを変更→設定を変更 適便修正

あとはバッチシーケンスの編集画面で適用するフォルダ等を選んでやりバッチシーケンス画面で作成したシーケンスを選んでシーケンスを実行してやればいいです。
わかりにくいところがあれば補足してください

QVBAでPDFを保存する

Excel2013です。VBAでPDFで保存するコードを書きたいのですが、通常の名前をつけて保存のように保存先とファイル名をその都度変更できるウィンドウを出したいのですが、どのようにすればいいのでしょうか?保存先とファイル名をあらかじめ指定する方法はネット検索でヒットするのですが、そうでない方法が探せません。

以下は現在のコードです。
Sub PDF保存()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"c:\\xxx.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Aベストアンサー

GetSaveAsFilenameメソッドでできるでしょう。


ファイル指定ダイアログの表示
http://www.officepro.jp/excelvba/book_new/index10.html

QエクセルVBAで、PDFファイルを開きたい

セルに入力した値のブック(xls)を開く場合、
以下となりますが、↓

Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く
End Sub


これでPDFファイルを開きたいです。
記述をどうしたらよいでしょうか。
目的はPDFファイルの検索/照会をxlsにてしたいのです。
お手数ですがお願いいたします。

Aベストアンサー

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュールに
Sub test2()
Dim strFilePath As String
strFilePath = _
  Application.GetOpenFilename _
  ("PDFファイル,*.pdf", MultiSelect:=False)

If strFilePath = "false" Then
 Exit Sub
End If

Call Shell("explorer.exe " & strFilePath)

End Sub
でも?
ということかな?

案1
ハイパーリンクにしてしまう。

案2
PDFファイルへのフルパスが、B列に記述してある
拡張子PDFへの関連付けがAcrobat Reader にしてある
と仮定して
ワークシートのイベントに

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "pdf") > 0 Then
  Call Shell("explorer.exe " & Target.Value)
  Cancel = True '編集モードキャンセル
End If
End Sub
とか?

PDFファイルが一箇所にまとまっているのなら
標準モジュー...続きを読む

QEXCEL VBAでメール添付して送信

こんにちは。
EXCEL VBAで
自分のファイルをある宛先にメールで送信したい場合は、
どのようにしたらできますか?
どなたか、わかる方・・・教えてください。
よろしくお願いします。

Aベストアンサー

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olMailItem)
myDATA.To = Range("B3").Value
myDATA.CC = Range("F3").Value
myDATA.Subject = Range("C3").Value
myDATA.Body = Range("D3").Value
myDATA.Attachments.Add Range("G3").Value
myDATA.Send
Set myDATA = Nothing
Set myOLApp = Nothing
End Sub

コピペして使ってみてください。コマンドの意味は先紹介のスレに
説明して有ります。

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olM...続きを読む

Q【急務】複数のPDFの開封パスワード設定&解除方法

会社で紙ベースの文書をPDF化して、それぞれに同じ開封パスワードを一括で設定したいのですが、方法がわからない為、個々に「パスワードによる暗号化」を設定して対応していますが、時間がかかり仕方がありません。有料ソフトの購入以外で何か良い方法が有れば、ご教授おねがいします。

ちなみに「Adobe Acrobat 9 Standard」は、手元にあります。

Aベストアンサー

こんにちは

Acrobatではバッチ処理が可能なのですが残念ながらstandardには
その機能はありません。Pro(Professional)の機能になります。
参考URL
http://kb2.adobe.com/jp/cps/355/3553.html

検索されると見つかるかもしれませんが
Acrobatの体験版で代用するくらいしか思いつかないです。
http://www.adobe.com/jp/downloads/

QWord文書にパスワードをマクロでかける

下記のようなマクロをエクセルの中で記述し、エクセルの該当セルをダブルクリックしたときに
動くようにしています。
定義 セルA1:マーカー(例:P・・Passwordを掛けろ)
   セルB1:パス
   セルC1:ファイル名(今回、ext=DOCとします)

動きとしては、特にエラーが出ることもないのですが、肝心のパスワードロックが掛かっていません。
なぜだか、理由がわかりません。よろしくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.Visible = False
Call Action_DOC(Target)
Application.Visible = True
End Sub

Sub Action_DOC(ByVal Target As Range)
Dim WdApp As Word.Application
Dim Fn As string

Set WdApp = New Word.Application
WdApp.Visible = True
Fn = Trim(Target.Offset(0, 1).Value) & "\" & Trim(Target.Offset(0, 2).Value)
WdApp.Documents.Open Filename:=Fn, PasswordDocument:="xxxxx"
WdApp.DisplayAlerts = False
WdApp.ActiveDocument.SaveAs2 Filename:=Fn, FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="xxxxx", AddToRecentFiles:=True, WritePassword:="", CompatibilityMode:=14
WdApp.ActiveWindow.Close
WdApp.Quit
Set WdApp = Nothing
End Sub

下記のようなマクロをエクセルの中で記述し、エクセルの該当セルをダブルクリックしたときに
動くようにしています。
定義 セルA1:マーカー(例:P・・Passwordを掛けろ)
   セルB1:パス
   セルC1:ファイル名(今回、ext=DOCとします)

動きとしては、特にエラーが出ることもないのですが、肝心のパスワードロックが掛かっていません。
なぜだか、理由がわかりません。よろしくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = ...続きを読む

Aベストアンサー

内容的に問題ないと思いますが、Wordの場合は何か編集作業をしないと
上書き保存されません。何かを書き込んでから、書き込んだものを削除
するなどの作業をマクロに追加しないと、開いたファイルの上書き保存
が有効にならないのです。
http://stabucky.com/wp/archives/4346

上記サイトの場合だと、改行を追加し、削除する部分を追加することで
上書き保存を有効にしていますよね。

Qパスワードのかかっているエクセルファイルを開くマクロ

こんにちは、

エクセルのファイルが40近くあります。それぞれ異なったパスワードで保存されています。すべてのファイル名とそのパスワードはわかっています。パスワードのかかっているエクセルファイルを開き、特定の部分(例えばA1のセル)の合計を求めるようなマクロを組もうと思っています。

パスワードのかかっているエクセルファイルを開くようなマクロを組むことは可能でしょうか?もしご存知の方がいましたら、ご教授いただければ助かります。よろしくお願いいたします。

Aベストアンサー

ヘルプくらいは見ましょう。

---------------------------------------------------------
Open メソッド
ブックを開きます。

構文
expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended,
Origin, Delimiter, Editable, Notify, Converter, AddToMRU)

expression 必ず指定します。対象となる Workbooks コレクションまたは RecentFile オブジェクトを表すオブジェクト式を指定します。

FileName 必ず指定します。文字列型 (String) の値を使用します。開くブックのファイル名を指定します。

(中略)
Password 省略可能です。バリアント型 (Variant) の値を使用します。パスワード保護されたブックを開くのに必要なパスワードを指定します。パスワードが必要な場合にこの引数を省略すると、パスワードの入力を促すダイアログ ボックスが表示されます。

ヘルプくらいは見ましょう。

---------------------------------------------------------
Open メソッド
ブックを開きます。

構文
expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended,
Origin, Delimiter, Editable, Notify, Converter, AddToMRU)

expression 必ず指定します。対象となる Workbooks コレクションまたは RecentFile オブジェクトを表すオブジェクト式を指定します。

FileName 必ず指定します。文字列型 (Str...続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub


人気Q&Aランキング