PDFWriterを使用してPDFを出力する際に発生する「共有違反」エラーの解決方法

このQ&Aのポイント
  • Acrobat PDFWriterを使用して帳票をPDFに変換し、配信している際に「この文書を開くときにエラーが発生しました。共有違反」というエラーが頻繁に発生する問題が発生しました。
  • PDFWriterで出力したPDFが一時的にE:\temp.pdfという名前で保存されている間に他のPDFを作成する処理が行われることにより、エラーが発生する可能性が高いです。
  • 解決方法としては、PDFWriterでのファイル名の一時保存先を変更することや、PDFを作成する処理を待機させることなどが考えられます。具体的な解決策を見つけるためには、さまざまな情報源を調査し、同様の問題に取り組んだ人々の経験を参考にすることが重要です。
回答を見る
  • ベストアンサー

この文書を開くときにエラーが発生しました。共有違反

お世話になります。 タイトル的には似たような質問も結構あったのですが共有違反のケースが見当たらなかったので質問させて頂きます。 Acrobat PDFWriterというソフトを使って帳票をPDFにして業者へ配信しています。 accessのレポートの印刷先をPDFWriterにして以下のモジュールをマクロから流しています。 ----- Public Function PDFWrite(strRptName As String, strFileName As String) Dim OldName As String, NewName As String DoCmd.OpenReport strRptName, acViewNormal OldName = "E:\TEMP.PDF" NewName = strFileName If Dir(NewName) <> "" Then Kill (NewName) Name OldName As NewName End Function ----------- この処理が最近になって「この文書を開くときにエラーが発生しました。共有違反」というエラーが頻繁に出るようになりました。 ファイルを作成する処理自体はこけていないようなので,エラーに対しOKと押すと「この文書を開くときにエラーが発生しました。ファイルが存在しません。」と出るのでずっとOKと答え処理を終わらせています。 この作業が煩わしいので色々調べて見たんですが事例が少ないのかヒットしませんでした。 恐らく・・ PDFWRITERで出力したものは一度E:\temp.pdfという名前で出力されAcrobatreaderで開かれているみたいです。この名前を引数で指定して変更するまでの間に他のPDFを作成する処理が始まって・・みたいな話だとは思うのですが頻度が異常なのです。※多分PDFを作成する処理が全てこのこけかたです。 こういった現象の解決方法などをご存知の方がいらっしゃいましたらご指導くださいませ!

質問者が選んだベストアンサー

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

 jg20081009さん、こんにちは  アプリケーション固有の問題だったら、外しています。ごめんなさい。  もしOSがWindowsで共有ファイルサーバか電源を落とさない共有PCなら、OSがファイルハンドルを掴んだままはなさない状態に陥っている場合があります(temp.pdf)。  もし、心当たりがあるなら、一度OSの再起動をすることをお奨めします。

jg20081009
質問者

補足

こんにちは! OSはWindowsです。 共有ファイルサーバーです。 通常電源を落とさないです。 全て該当するので再起動をしたいんですが,時間起動で走る処理が色々ある関係ですぐには再起動できません。 何かファイルハンドルを掴んでいるかどうか確認する術をご存じないでしょうか?

その他の回答 (1)

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.2

 jg20081009さん、こんにちは  何かファイルハンドルを掴んでいるかどうか確認する術という御質問ですが、残念ながら専門家ではないので方法を知りません。  私が経験したこの現象の時は、不要ファイルなのでAdministrator にお願いし、削除を試みましたが出来ない状態でした(リネームやサーバ内の移動は出来た)。このため、制御不可能と判断され再起動の手段をとられたようです。 再起動後は、一般ユーザでそのファイルを削除できました。  ファイルハンドルを掴んでいるというのは推定なのです。もしかするとアクセス権限関係の異常なのかも知れません。  ところで共有サーバーですとなかなか再起動のチャンスを作るのが大変だと思いますが、マイクロソフトから最新セキュリティパッチ(緊急度1)の対応がアナウンスされており、そのパッチ後、再起動を求められるのでよいチャンスかも知れません。

jg20081009
質問者

補足

残念ながら再起動をしてみたのですが無理でした・・。 ログインしなおした後にAdbe Acrobat 5.0がいきなりエラーで立ち上がったので何か異常が起こっているのかもしれません。 Acrobat PDFWriterで印刷時にPDFが表示されているのですが環境変数等で表示できないように出来れば何とかなるのかもしれません。 どなたかそのような方法をご存じないでしょうか?

関連するQ&A

  • VBのKillについて

    皆様いつもお世話になっております。 質問なのですが VBの構文の一部で Dim strFilename as string strFilename = "C:\Temp\*.*" Kill strFilename とすると、指定したフォルダの中身が削除されるのですが、このフォルダ内に以下のpdfファイルを入れると、エラーが発生してしまいます。 テキストファイルで約同容量のファイルの削除も試み成功しました。 また、10KB程度のpdfファイルも削除できます。 何が原因かお分かりの方おりませんでしょうか? 【詳細】 ファイル名:J00932_4.pdf ファイルサイズ:8,531KB エラーメッセージ:パス名が無効です。 どうぞよろしくお願いします。

  • 別名で保存し、元の名前で中身を新しくして使いたい

    個人名.xlsmがあり、中味をみて必要ならばまっさらのに更新し、元の分はOLDというフォルダに保存したいのですが... oldName=ThisWorkbook.Name oldPath=ThisWorkbook.Path 中味をみて更新すべきという状態だったら newName="以前の" & oldName newPath=oldPath & "\" & "OLD" ThisWorkbook.save as Filename:=newPath & "\" & newName sheets("sheet1").select Cells.Select Selection.ClearContents ThisWorkbook.save as Filename:=oldPath & "\" & oldName とすると最後の行が黄色になって、 実行時エラー 1004 個人名.xlsmにアクセスできません。 とでます。 何か打開する方法はないでしょうか?

  • 【VB6.0】ファイルからサイズの大きいバイナリデータを読み込む際にエラー

    はじめまして。 初投稿の新米プログラマです。 VB6.0で多種類のファイルをバイナリデータとして読み込んで 返却する関数を作成しています。 '------------------------------------- ' ファイルからバイナリデータを読み込む '------------------------------------- private Function GetBinaryData(ByVal strFileName As String) As Byte() On Error GoTo Exception Dim fileNo As Integer Dim fileSize As Long Dim bytData() As Byte 'ファイルのサイズを取得する fileSize = FileLen(strFileName) ReDim bytData(fileSize - 1) 'バイナリデータ読み込み fileNo = FreeFile Open strFileName For Binary Access Read As fileNo Get #fileNo, , bytData Close #fileNo '戻り値の設定 GetBinaryData = bytData Exit Function 'エラー処理 Exception: MsgBox (CStr(Err.Number) & " " & Err.Description) End Function ですが、↑の関数にサイズの大きなファイル(100M程度)を指定したとき  ReDim bytData(fileSize) で、「メモリが不足しています」というエラーが発生してしまいます。 発生の仕方としては、'エラー処理のMsgBoxで表示されることも ありますし、プログラムが停止することもありますし、 On Error GoToを記述しているのにも関わらず VBのメッセージボックスが表示されることもあります。  #[継続][終了][デバッグ][ヘルプ]のボタンが出ているやつです。 ちなみに、50M程度のファイルであれば読み込めています。 このエラーが発生する原因は何なのでしょうか? また、解決方法(サイズの大きなファイルを確実に読み込む方法)は あるのでしょうか? 解決方法がないのであれば、「○M以上のファイルはエラー」という 仕様にしようと思うのですが、 何Mまでなら確実に読み込むことが出来るのでしょうか? …もしくは上のコーディング自体、検討違いでしょうか^^;  #バイト配列の要素数に上限があるとか…? とても困っています… どうかよろしくお願い致します。

  • C言語を使用し、同じ内容のファイルを増やす

    始めまして、ちょっと困っている事があります。 今現在Cで、あるプログラムを作ってます。 さて困っている内容ですが、testと記述されているテキストファイルを増やす所で困ってます。 「test」と記述されている「test.txt」を記述内容は同じで 「test01.txt」「test.02.txt」「test03.txt」・・・ と増やすにはどのようにプログラムを書けば宜しいでしょうか? *因みに、こちらが作成してみたプログラムです。 renameを使用して元のファイルを変えていく感じでやっていましたが・・ #include <stdio.h> #define MANGA 10 /*int main(void) { char oldname[256] = "bace00.html", newname[256] = "bace01.html"; FILE *fp; int i,a; printf( "%s\n", newname ); for( a = 0; a < MANGA; a++ ){ printf( "%d",a ); printf( "%s\n", newname ); rename(newname, "bace02.html"); printf( "%sあああ\n", newname ); //rename(oldname, newname) //newname[256] = "bace"; for( i = 0; i < MANGA; i++ ){ fp = fopen( "bace00.html","w" ); fprintf( fp, "<html>\n<title>%s</title>\n<head>\n</head>\n</html>\n" ); fclose( fp ); */ /* ファイル名の変更 */ /* if (rename(oldname, newname) == 0){ printf("%s のファイル名を %s に変更しました。\n", oldname, newname); }else{ perror("rename error"); } } } return 0; }*/

  • 配列を返り値、でエラー

    Excelで、ボタンが押されるとファンクションを呼び出し、 指定した文字列を文字列型の配列に格納して返す、 というマクロを作成したいのですが ―Sheet1―――――――――――― Private Sub btn_Click() Dim inpt(3) As String inpt = Module1.getArg() End Sub ―――――――――――――――― ―Module1――――――――――― Function getArg() As String() Dim ret(3) As String ret(0) = "1番目" ret(1) = "2番目" ret(2) = "3番目" getArg = ret End Function ―――――――――――――――― inpt = Module1.getArg() の部分で「配列には割り当てできません」とエラーが出てしまいます。 色々試してはみたのですが、どうも解決できません。 ヒントだけでも構いませんのでご助力お願いします。

  • API,PathIsDirectoryについて

    よろしくお願いします。 VB6.0sp6,Windows2000professionalsp4です。 VBでのディレクトリの有無の判別方法を検索していて、サンプルをひとつ見つけたのですが・・・↓がコードです。 ------------------------------------------------ Private Declare Function PathIsDirectory Lib "SHLWAPI.DLL" Alias "PathIsDirectoryA" _ (ByVal pszPath As String) As Long ' ' ディレクトリであるかどうか ' Private Function IsDirectory(ByVal strFileName As String) As Boolean ' strFilename : チェックしたいディレクトリ名 ' 戻り値 : ディレクトリであればTrueを返す。 Dim lngResult As Long lngResult = PathIsDirectory(strFileName) IsDirectory = Not (lngResult = 0) 'ここが理解できません End Function Private Sub Command1_Click() Dim strFileName As String strFileName = "C:\WINNT\Profiles\Administrator\My Documents\HEROPA\TestCls\SHLWAPI" Msgbox IsDirectory(strFileName) End Sub -------------------------------------------- IsDirectory関数は、PathIsDirectoryの戻り値がLong型のため、それをBooleanに直すためのものだと思うのですが、 IsDirectory = Not (lngResult = 0)はどういう原理なのでしょうか? これだとlngResultにどんな値が入ろうがIsDirectoryに返されるのはTrueになってしまうと思うのですが(lngResultに0が代入され、それがNotされるから)、しかし実際に実行してみるとちゃんとTrueとFalseを判定しています。いったいどうしてなのでしょうか? それと、PathIsDirectoryの宣言で、関数の戻り値がLongになっていますが、他に見つけたサンプルではBooleanとなっていました。どちらが正しいのでしょうか?

  • VBAでDLLが見つからないエラー

    CADのVBA(6.0)ですが、DLLが見つからないエラーが出ます ' こっちはエラーが出ない Public Declare Function SearchVBApath Lib _ "C:\Program Files\AppliTool\VB\DDDD.dll" (ByVal env As String, ByVal s As String) As Integer 'こっちだとエラーが出る Public Declare Function SearchVBApath Lib "DDDD.dll" (ByVal env As String, ByVal s As String)    As Integer VBAプロジェクトファイルとDLLは同じフォルダにおいてあります 上記のようにフルパスだとエラーが出ないのですがDLL名だけだとこの関数のところでエラーがでます このDLL関数宣言行の前の方には他のDLL関数も同じようにパス省略で記述しているのですがそちらにはエラーが出ません どなたかヒント下さい、よろしくお願いします。

  • 変名が思うように処理されないのは ?

    現在、以下のようなコードでA列のファイル名に指定の不要文字が含まれる場合、削除して変名を行っています。 エラーは出ないのですが、同名チェックが想定と違うのか上手く処理できていません。 具体的には、 不要文字が無いのに(1)が追加されて変名される場合があります。 不具合の原因が判るでしょうか? Option Explicit Sub ファイル変更_部分削除() Dim Fso As Object 'FileSystemObject Dim Folder As Object 'Folder Dim File As Object 'File Dim FolderPath As String 'フォルダパス Dim Target As Variant '削除したい文字列 Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Worksheets("Target") Set ws2 = Worksheets("DEL") 'FileSystemObjectを作成 Set Fso = CreateObject("Scripting.FileSystemObject") 'フォルダパスを指定 FolderPath = "C:\Target\" 'Folderオブジェクトを取得 Set Folder = Fso.GetFolder(FolderPath) Worksheets("Target").Cells.Clear ws1.Range("A1") = "修正後のファイル名" ws1.Range("A1").Font.Bold = True ws1.Range("B1") = "拡張子" ws1.Range("B1").Font.Bold = True ws1.Range("C1") = "元ファイル名_退避" ws1.Range("C1").Font.Bold = True Dim ext As String Dim num As Long num = 2 For Each File In Folder.Files ext = Fso.getextensionname(File.Name) Select Case ext Case "ts", "mkv", "mp4" '元ファイル名及び同拡張子を出力 ws1.Cells(num, "A").Value = Fso.GetBaseName(File.Name) ws1.Cells(num, "B").Value = Fso.getextensionname(File.Name) num = num + 1 Case Else End Select Next Dim lc1 As Long, lc2 As Long lc1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row '最終行番号の取得 lc2 = ws2.Cells(Rows.Count, "B").End(xlUp).Row '元ファイル名を退避 ws1.Range(ws1.Cells(2, "A"), ws1.Cells(lc1, "A")).Copy ws1.Cells(2, "C").PasteSpecial ws1.Columns("A:C").AutoFit '-------------------------------------------------------- 'Replacedメソッド / ワイルドカードを使って置換() Dim DelMojis As String '指定文字列を格納する変数 Dim i As Long Dim Fix1 As String For i = 2 To lc2 With ws1 .Range(.Cells(2, "A"), .Cells(lc1, "A")).Replace what:=Fix1, Replacement:="", LookAt:=xlPart End With Next For i = 2 To lc2 DelMojis = ws2.Cells(i, "B") '指定文字列を変数に代入 With ws1 .Range(.Cells(2, "A"), .Cells(lc1, "A")).Replace what:=DelMojis, Replacement:="", LookAt:=xlPart End With Next '---------------------------------------- 'ファイル名変更 Dim OldName As String '元のファイル名 Dim NewName As String '新しいファイル名 For i = 2 To lc1 With ws1 OldName = FolderPath & .Cells(i, "C") & "." & .Cells(i, "B") NewName = FolderPath & .Cells(i, "A") & "." & .Cells(i, "B") End With With Fso 'fso=CreateObject("Scripting.FileSystemObject") '移動先に同名のファイルがあるかチェック If .FileExists(NewName) Then ' 同名がある場合は、NewNameの最後に(1)を追加する Dim k As Long k = InStrRev(NewName, ".") NewName = Left(NewName, k - 1) & "(1)" & Right(NewName, Len(NewName) - k + 1) .MoveFile OldName, NewName Else 'ファイルを移動 .MoveFile OldName, NewName End If End With '-------------------------- Next End Sub

  • WORD文書のPDF変換

    OSはWinXp、WORD2003、ACROBAT6の環境です。 WORDで作成したA4とA3が混じった文書をPDFプリンタでPDF文書に変換したところ、処理は問題なく終了しますが、作成されたPDF文書が途中のA3以降はWORDではA4で作成しているにも関わらず、全てA3に変換されてしまっています。 何か解決方法はありますでしょうか。 よろしくお願いします。

  • 共有フォルダーを参照不可能にする

    パソコンがイントラで数台繋がっているのですが、会計のパソコンからは別PCの共有フォルダに アクセスできないような設定にされました。アクセスしようとするとエラーのプロンプトが 返ってきます。これは具体的にはどういった設定をしたと思われますか? ユーザーの権限の設定でしょうかね・・・。 ところが、会計のPCから別PCの「temp」フォルダにだけはアクセスできます。 これはなぜでしょうか?あたらしく共有フォルダを作っても全てエラーになるのですが。 また最後に、上記のようなアクセスできる「temp」フォルダがないPCがあります。 そのためtempフォルダのないPCとはファイルを共有できません。 どうにかアクセスできるtempフォルダを作成するか、別の方法でファイルを共有できないで しょうか? そもそもtempフォルダとは何ですか? よろしくお願いします。

専門家に質問してみよう