• ベストアンサー

VBAでPDFをテキスト出力する時のエラー

PDFをテキスト出力するVBA実行時、Acrobatから「ファイルを開けません」とエラーメッセージが表示されます。何のファイルなのかわからないので教えてください。 下記VBAで、最終行の「objJs.SaveAs txtFilePath, "com.adobe.acrobat.plain-text"」でPDFは読み込まれて画面表示されますが、同時に「ファイルを開けません」というメッセージが表示されます。PDFは正常に読み込まれていると思われるので、ほかに何が必要なのか教えてください。 AcrobatとMicrosoftScriptingRuntimeは組み込んでいます。 -------------------------------------------- 'PDFのデータをExcelに読み込むメイン処理 Sub Main() 'PDFファイルをテキストに変換するための定数を用意 Const fileName = "テストファイル" Const folderPath = "C:\Data\" Const pdfFilePath = folderPath & fileName & ".pdf" Const txtFilePath = folderPath & fileName & ".txt" 'PDFファイルをテキストに変換 Call convPDFtoText(fileName, folderPath, pdfFilePath, txtFilePath) End Sub 'PDFファイルをテキスト変換する処理 Sub convPDFtoText(fileName As String, folderPath As String, pdfFilePath As String, txtFilePath As String) 'Acrobat操作用の変数を宣言 Dim objAcrobatApp As New Acrobat.AcroApp Dim objAcrobatAVDoc As New Acrobat.AcroAVDoc Dim objAcrobatPDDoc As Acrobat.AcroPDDoc Dim AcrobatId As Long Dim objJs As Object 'Acrobatアプリを起動 AcrobatId = objAcrobatApp.Show 'PDFファイルを開く AcrobatId = objAcrobatAVDoc.Open(pdfFilePath, "") 'PDDocオブジェクトを取得 Set objAcrobatPDDoc = objAcrobatAVDoc.GetPDDoc() 'Acrobat JavaScriptオブジェクトを作成 Set objJs = objAcrobatPDDoc.GetJSObject 'PDFをテキストで保存 objJs.SaveAs txtFilePath, "com.adobe.acrobat.plain-text"

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1614/2452)
回答No.2

過去の事例でかつExcel変換の話ですが 『環境設定』で復旧しました とありますので試してみてはいかがでしょう VBA上でのPDF→Excelの変換ができなくなりました https://community.adobe.com/t5/acrobat%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A9%E3%83%A0-discussions/vba%E4%B8%8A%E3%81%A7%E3%81%AEpdf-excel%E3%81%AE%E5%A4%89%E6%8F%9B%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F/td-p/12535946?profile.language=ja こちらは復旧したという事例ではないませんが、回答でこれしてみたら的な回答があるのでそれも参考にしてみてはいかがでしょう。 pdfをテキストで保存でエラー https://community.adobe.com/t5/acrobat%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A9%E3%83%A0-discussions/pdf%E3%82%92%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%A7%E4%BF%9D%E5%AD%98%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC/td-p/13723029?profile.language=ja

azx88169
質問者

お礼

回答ありがとうございました。 書かれていた「環境設定」のとおりに変更したらエラーが出なく変換できました。 ありがとうございました。 でも、なぜ回避できたのかは全くわかりません。

その他の回答 (1)

  • FattyBear
  • ベストアンサー率32% (1213/3697)
回答No.1

想像ですがファイルを開くときに時間がかかりAcrobatから読み込み時間でタイムアウト?がかかり 「ファイルを開けません」と表示だけ出たのではないでしょうか。 私もPCの不具合か通信速度が極端に遅いのか似たような表示「繋げられません」とかアプリは言ってきますが 待っていると繋がります。

azx88169
質問者

補足

回答ありがとうございます。 タイムアウトもあるんですかね。 タイムアウト確認のため1ページの軽いPDFで試しましたが、PDF表示と同時にAcrobatから「ファイルを開けません」と表示されます。 何かのシステムファイルが足りないのか?と考えても思い当たる節がありません。 どん詰まりです。

関連するQ&A

  • テキストファイルとして開くVBA

    フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください

  • VBAでエラーが出ます

    セルの値を変数に格納して、それをブック保存時に使いたいのですが上手くいきません。 Sub サンプルブック保存() Dim myfile As String myfile = workbooks("サンプル").Worksheets("sheet1").Cells(2, 9) workbooks.Add ActiveWorkbook.SaveAs Filename:="\\C:\フォルダ\" & myFile & ".xls" End Sub エラーメッセージは、 実行時エラー'1004': SaveAs'メソッドは失敗しました'_Workbook'オブジェクト と出ます。 非常に困ってます。 教えてくだされば幸いです。

  • VBA 保存

    保存ボタンを作成してファイルに飛ぶように させていますが…どうしてもエラーになります! エラー表示内容> 実行時エラー1004 シートの名前を他のシート、Visual Basicで参照される オブジェクト ライブラリまたは ワークシートと同じ名前に変更することはできません。 下記は実際の記述です。 Private Sub 保存_Click() Dim FileName As String Dim FileExt As String Dim BkName As String Dim OldWkbook As Workbook Dim NewWkbook As Workbook Const StName1 As String = "計画 グラフ" Const StName2 As String = "ケア一覧" ' Application.DisplayAlerts = False Set OldWkbook = ActiveWorkbook ' 'ファイル名を取得 BkName = OldWkbook.Sheets(StName1).Range("D1").Value FileName = BkName & Format(Now, "yyyy-mm-dd") & ".XLS" ' FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName) If FileName = "" Then Exit Sub Else If Right(FileName, 4) <> ".XLS" Then MsgBox "ファイル名が異常です。" Exit Sub End If End If ' OldWkbook.Sheets(Array(StName1, StName2)).Copy Set NewWkbook = ActiveWorkbook For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count NewWkbook.Sheets(1).Shapes(1).Delete '←シート1のボタンを削除 Next NewWkbook.Sheets(1).Name = StName1 NewWkbook.Sheets(2).Name = StName2 ' FileName = "D:\看護計画保存\" & FileName ' If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then NewWkbook.Close savechanges:=False '##保存せずに終了 Exit Sub End If '##指定ファイル置き換え保存 NewWkbook.SaveAs FileName:=FileName Else '##ファイルを新規保存 NewWkbook.SaveAs FileName:=FileName End If ' NewWkbook.Close savechanges:=False Application.DisplayAlerts = True End Sub

  • エクセルVBAでのエラー

    おはようございます。 昨日ここでいろいろ教えていただき、300のエクセルファイルから特定の範囲のデータ抽出方法を書いてみたのですが、セルが多すぎて実行できません、というエラーがでてしまいます。 これはどのように解消すればよろしいのでしょうか? Sub Test() Dim FPath1 As String, FPath2 As String Dim FName As String, myBook As String Const startROW As Long = 14, lastROW As Long = 20 Const startCOL As Long = 8, lastCOL As Long = 10 Const shtNAME As String = "sheet1" Application.ScreenUpdating = False FPath1 = "D:\MR5567\" FPath2 = "D:\New Microsoft Excel Worksheet\" Workbooks.Add myBook = ActiveWorkbook.Name FName = Dir$(FPath1 & "*.xls") Do While FName <> "" Workbooks.Open Filename:=FPath1 & FName ActiveWorkbook.Sheets.Select Sheets(1).Activate Sheets.Copy After:=Workbooks(myBook).Sheets(Sheets.Count) Workbooks(FName).Activate Application.DisplayAlerts = False ActiveWorkbook.Close FName = Dir$ Loop ActiveWorkbook.SaveAs Filename:=FPath2 & "Renketsu.xls", FileFormat:=xlNormal ActiveWorkbook.Close Application.ScreenUpdating = True End Sub

  • テキストデータを出力するVBAがうまく動きません

    いつもお世話になっております。 複数あるシートのうち、シート名が数字になっているシートの一部をテキストファイルに出力するVBAを作成していますが、うまく動作しません。 (テキストファイルは作成できますが、データが書き込まれていません) シートをすべて検索しているのは、使用する人によってシート数がことなるためです。 おそらく繰り返し処理の部分で、何かおかしなことをやっているのだと思いますが、見ていただいて悪いところがありましたら、教えていただけますでしょうか。 Const Separater = "," ' 区切り文字をカンマに設定 '------------------------------------------------------------ Sub saveFile(fileName As String) '------------------------------------------------------------ Dim filePath As String Dim nowdate As String Dim startcd As Integer Dim endcd As Integer Dim St As Worksheet Dim Stn As String startcd = 0 endcd = 0 nowdate = Year(Date) & Month(Date) & Day(Date) filePath = fileName & nowdate & ".txt" '----filename は「savefile」を呼び出す際の引数 Dim dataRange As Range On Error Resume Next CreateObject("Scripting.FileSystemObject").createTextFile (filePath) '---- 全シート名のチェック For Each St In ThisWorkbook.Worksheets Stn = St.Name If IsNumeric(Stn) Then Worksheets(Stn).Activate Set dataRange = ActiveSheet.Range("A5:E71") '---- ファイルの書き込み処理 Dim RowStart%, RowEnd%, RowIndex% '--- 変数を整数型として宣言 RowStart = dataRange.Row RowEnd = dataRange.Row + dataRange.Rows.Count - 1 Dim ColStart%, ColEnd%, ColIndex ColStart = dataRange.Column ColEnd = ColStart + dataRange.Columns.Count - 1 Dim oneLine As String For RowIndex = RowStart To RowEnd '---- 1行の作成 oneLine = Stn & Separater & Cells(RowIndex, ColStart).Value For ColIndex = ColStart + 1 To ColEnd oneLine = oneLine & Separater & Cells(RowIndex, ColIndex).Value Next CreateObject("Scripting.FileSystemObject").writeLine oneLine '---- 1行の出力 Next End If Next St CreateObject("Scripting.FileSystemObject").Close '---- ファイルのクローズ End Sub

  • エクセルVBAでワード文書をPDF保存

    質問の仕方が悪かったようですので先日の質問 https://okwave.jp/qa/q9876787.html を取り消し、再度質問させていただきます。 エクセル2016のワークシート上にオブジェクトの挿入でワードの文書ファイルをアイコンで貼り付けています。VBAでこの文書ファイルを開き、PDFとして保存しようと思います。 見よう見まねで以下のようなコードを書いてみまた。 '参照設定 Microsoft Word 16.0 Object Library Sub test01() Dim objWord As Word.Application Set objWord = CreateObject("Word.Application") objWord.Visible = True Dim objDoc As Word.Document Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set objDoc = Worksheets("Sheet1").OLEObjects(1).Verb(Verb:=xlVerbOpen) objDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objDoc.Close End Sub これで、文書ファイルは開くのですが、「オブジェクトが必要です」のエラーがでて、Set objDocがEmptyのままPDF保存ができません。どのように直せばいいのでしょうか? ご教示ください。

  • vbaマクロ 実行時エラー '91'について教えてください

    下記のマクロで、ファイル指定保存をする時に "実行時エラー91 オブジェクト変数またはWithブロック変数が設定されていません”がでます。 やりたいのは、選択したセルの1番目をファイル名として 保存をしたいのですが、うまくいきません。 どうしたらよいのでしょうか? Sub Macro1() Dim セル As Object Dim i As Long  i = 1  For Each セル In Selection   Worksheets("Sheet2").Cells(1, i).Value = セル     i = i + 1  Next ActiveWorkbook.SaveAs Filename:="D:\TEST\" & セル & ".xls" End Sub

  • テキストファイルをエクセルに移すマクロのことで?

    以前、複数のテキストファイルをエクセルに移すマクロを教えてもらったのですが、 以下マクロですと、フォルダのパスを指定しないといけません。 今回教えてもらいたいのは、フォルダのパスを指定しなくてもよい方法です。 どういう事かと言うと、仮にディスクトップにフォルダがあるとします。 そのフォルダの中には、マクロが入っているエクセルシートとテキストが入っているフォルダです。 つまり、そのフォルダ内だけで、処理をしたいと考えています。 また、フォルダ名は、その時によって異なります。 今までは、以下の方法を使っていたのですが、ちょっと使いにくいと感じています。 申し訳ありませんが、どなたか教えていただけないでしょうか? Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String 'ここのアドレスをファイルが格納されているフォルダのパスに変えてください FolderPath = "C:\Users\・・・" Dim myFile As Object Dim i As Long i = 2 Dim myFolder As Object For Each myFolder In fso.GetFolder(FolderPath).SubFolders For Each myFile In fso.GetFolder(myFolder).Files Cells(i, 4).Value = myFolder Cells(i, 1).Value = myFile.Name Cells(i, 7).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next Next End Sub Private Sub CommandButton1_Click() End Sub

  • エクセル VBA シート保存ボタン

    Sheet上にボタンを作成 ボタンを押すと保存するようにしています! 以前ここでSheet2枚をコピー出来るような 記述教えてもらったのですが・・ 1枚ならどう変化して良いか・・ 記述を書きましたが 何処が違うか教えて下さい! Private Sub CommandButton1_Click()   Dim FileName  As String   Dim FileExt   As String   Dim BkName   As String   Dim OldWkbook  As Workbook   Dim NewWkbook  As Workbook   Const StName1  As String = "ko"      '   Application.DisplayAlerts = False   Set OldWkbook = ActiveWorkbook   '   'ファイル名を取得   BkName = OldWkbook.Sheets(StName1).Range("A1").Value   FileName = BkName & Format(Now, "yyyy-mm") & ".XLS"   '   FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName)   If FileName = "" Then     Exit Sub   Else     If Right(FileName, 4) <> ".XLS" Then       MsgBox "ファイル名が異常です。"       Exit Sub     End If   End If   '   OldWkbook.Sheets(Array(StName1)).Copy   Set NewWkbook = ActiveWorkbook   For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count     NewWkbook.Sheets(1).Shapes(wIx).Delete    Next   NewWkbook.Sheets(1).Name = StName1   '   FileName = "D:\保存\計画\" & FileName   '   If Dir(FileName) <> "" Then     '##ファイルが既に存在する     If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then       NewWkbook.Close savechanges:=False       '##保存せずに終了       Exit Sub     End If     '##指定ファイル置き換え保存     NewWkbook.SaveAs FileName:=FileName   Else     '##ファイルを新規保存     NewWkbook.SaveAs FileName:=FileName   End If   '   NewWkbook.Close savechanges:=False   Application.DisplayAlerts = True End Sub 教えて下さい!

  • Excel 2007 VBAで実行時エラー

    Excel 2007のVBAで、EUCコードの変換を試す下記コードの(6)行に「実行時エラー '424' オブジェクトが必要です」となります。 修正方法を教えて頂きたくよろしくお願い致します。 (1) Sub Test() (2) Dim str As String (3) Dim bytesData(1) As Byte (4) bytesData(0) = &HC0 (5) bytesData(1) = &HA4 (6) str = System.Text.Encoding.GetEncoding(51932).GetString(bytesData) (7) MsgBox str (8) End Sub

専門家に質問してみよう