0
このサイトの類似するインスタンスに関するいくつかの質問が見つかりましたが、解決策はありませんでした。スクリプトが一度動作したら、ランタイムエラー '1004'で停止しました
私の目的は、ユーザーがスプレッドシート内のボタンをクリックし、a)ワークブック全体をローカルに保存するか、b)ブックの一部のみをPDFに書き出すことができるようにすることです。
"名前を付けて保存"のコードはうまく動作し、pdfコードへの書き出しは一度動作してから動作を停止しました。コードは以下の通りです:
Option Explicit
Sub Button1_Click()
Dim workbook_file_name As String
Dim datasheet As String
Dim saveworkbook As Double
Dim PDFdata As Object
saveworkbook = MsgBox("Would you like to save a local copy of entire workbook? Click No to only store as PDF", vbYesNo, "Save File As")
If saveworkbook = vbYes Then
workbook_file_name = "Sherman and Reilly Brake Test"
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = CreateObject("WScript.Shell").Specialfolders("My Documents") & "\" & workbook_file_name
.FilterIndex = 2
If .Show Then .Execute
End With
GoTo noPDF
Else
GoTo exportsheet
End If
exportsheet:
datasheet = "C:\Brake_Test_Data.pdf"
If Dir(datasheet) <> vbNullString Then
Kill datasheet
End If
Set PDFdata = Sheets("Data Sheet").Range("A93:I138")
With PDFdata
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=datasheet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End With
noPDF:
End Sub
PDFデータの変形にも疲れました。問題は、ここに表示されます。
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=datasheet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
私はファイル名を指定して実行時エラー1004および文書が保存されませんでしたし、文書が開いているであってもよいし、保存中にエラーが発生したというメッセージボックスを取得します。 YowE3K @
VBA I/Oの専門家ではありませんが、ファイルが既に存在するためではありません。 – Casey
@Casey私はこれを考えています。そのため、ディレクトリ検索を追加しました。それでも、スクリプトが動作したときに最初のpdfファイルがなくなったため、そのファイルは存在しなくなりました。 – ThirstyVoltage
私はあなたのコードを取り、 'saveworkbook = ...'から 'exportsheet:'まですべてを削除し、それを走らせました。私はそれを何度も実行するのに苦労しませんでした(私は、実行ごとにAcrobat Readerを閉じることを覚えていました)。 – YowE3K