[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『PDF化のVBA』(ある人)
複数のファイルをPDF化するVBAで
一番左のシート(シートの名前は決まっている)のみを除外してPDF化するマクロを作りたいのですが、うまくいきません。
どうしたらいいでしょうか?
Sub Convert_to_PDF()
Dim strDirPath As String strDirPath = Search_Directory() 'フォルダの選択 If Len(strDirPath) = 0 Then Exit Sub Call Make_Dir(strDirPath, "\PDF") 'フォルダ作成 Call Search_Files(strDirPath) End Sub
Private Function Search_Directory() As String 'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then Search_Directory = .SelectedItems(1) End With End Function
Private Sub Make_Dir(ByVal Path As String, ByVal Dn As String)
If Dir(Path & Dn, vbDirectory) = "" Then 'フォルダ存在確認 MkDir Path & Dn 'フォルダ作成 End If End Sub
Private Sub Search_Files(ByVal Path As String)
Dim strFile As String, strET As String strFile = Dir(Path & "\" & "*.*") 'ファイル確認 Application.ScreenUpdating = False Do Until strFile = "" If ThisWorkbook.FullName <> Path & "\" & strFile Then Call Conv_PDF(Path, "\" & strFile) End If strFile = Dir() '次のファイル確認 Loop Application.ScreenUpdating = True MsgBox ("PDF化完了!") End Sub
Private Function Get_Extension(ByVal Path As String) As String '拡張子取得
Dim i As Long i = InStrRev(Path, ".", -1, vbTextCompare) If i = 0 Then Exit Function Get_Extension = Mid$(Path, i + 1) End Function
Private Sub Conv_PDF(ByVal Path As String, ByVal Fn As String)
Application.DisplayAlerts = False
Dim filePath As String, objOffice As Object filePath = Path & "\PDF" & Left$(Fn, InStrRev(Fn, ".")) & "pdf" Path = Path & Fn Select Case Get_Extension(Fn) 'ファイル名から拡張子取得 Case "xls", "xlsx", "xlsm" 'Excel97-2003,Excel2007以降 Set objOffice = Excel.Application With objOffice.Workbooks.Open(Path) .ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=filePath, Openafterpublish:=False .Close End With Case "doc", "docx" 'Word97-2003,Word2007以降 Set objOffice = CreateObject("Word.Application") With objOffice.Documents.Open(Path) .ExportAsFixedFormat OutputFileName:=filePath, _ ExportFormat:=17 .Close End With objOffice.Quit Case "ppt", "pptx" 'Powerpoint97-2003,Powerpoint2007以降 Set objOffice = CreateObject("Powerpoint.Application") With objOffice.Presentations.Open(Path) .SaveAs Filename:=filePath, FileFormat:=32 .Close End With objOffice.Quit Application.DisplayAlerts = True End Select End Sub
< 使用 Excel:Excel2016、使用 OS:unknown >
With objOffice.Workbooks.Open(Path) .ExportAsFixedFormat Type:=xlTypePDF, From:=2, _ ’←ここ修正 Filename:=filePath, Openafterpublish:=False .Close End With
(わからん) 2022/02/22(火) 17:25
シートをグループ化すればいいんですが、 WorksheetsオブジェクトにはExportAsFixedFormatメソッドがないので、 Selectしてから、ActiveSheetに対してExportAsFixedFormatしてます。 ん〜?うまくいくかな?って感じです
Dim ind() As Integer With objOffice.Workbooks.Open(Path) ReDim ind(2 To .Worksheets.Count) For i = 2 To .Worksheets.Count ind(i) = i Next .Worksheets(ind).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Openafterpublish:=False .Close End With (´・ω・`) 2022/02/23(水) 08:19
2ページ以降がアクティブでないからだと思いますが、
1ページをWorksheets(1).Activateでアクティブにしたところ、
1ページのみしかPDF化されませんでした。
(ある人) 2022/02/23(水) 09:50
(ある人) 2022/02/23(水) 09:56
それでは With objOffice.Workbooks.Open(Path) .Worksheets(1).Delete .ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Openafterpublish:=False .Close False End With ではだめですか (´・ω・`) 2022/02/23(水) 10:23
削除じゃなくて非表示にするほうが安全かも (´・ω・`) 2022/02/23(水) 10:26
>エラー91(オブジェクト変数または With ブロック変数が設定されていません。) どこででますか?
>どこかでSetを入れてやらないとダメですかね? ちょっと意図しているところがわかりません (´・ω・`) 2022/02/23(水) 16:27
PDFに書き出したあと、その前の行でエラーになるっていうのが、 よくわかりません 現状のコードはどうなってますか? (´・ω・`) 2022/02/24(木) 13:03
Dim strDirPath As String strDirPath = Search_Directory() 'フォルダの選択 If Len(strDirPath) = 0 Then Exit Sub Call Make_Dir(strDirPath, "\PDF") 'フォルダ作成 Call Search_Files(strDirPath) End Sub
Private Function Search_Directory() As String 'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then Search_Directory = .SelectedItems(1) End With End Function
Private Sub Make_Dir(ByVal Path As String, ByVal Dn As String)
If Dir(Path & Dn, vbDirectory) = "" Then 'フォルダ存在確認 MkDir Path & Dn 'フォルダ作成 End If End Sub
Private Sub Search_Files(ByVal Path As String)
Dim strFile As String, strET As String strFile = Dir(Path & "\" & "*.*") 'ファイル確認 Application.ScreenUpdating = False Do Until strFile = "" If ThisWorkbook.FullName <> Path & "\" & strFile Then Call Conv_PDF(Path, "\" & strFile) End If strFile = Dir() '次のファイル確認 Loop Application.ScreenUpdating = True MsgBox ("PDF化完了!") End Sub
Private Function Get_Extension(ByVal Path As String) As String '拡張子取得
Dim i As Long i = InStrRev(Path, ".", -1, vbTextCompare) If i = 0 Then Exit Function Get_Extension = Mid$(Path, i + 1) End Function
Private Sub Conv_PDF(ByVal Path As String, ByVal Fn As String)
Application.DisplayAlerts = False
Dim filePath As String, objOffice As Object filePath = Path & "\PDF" & Left$(Fn, InStrRev(Fn, ".")) & "pdf" Path = Path & Fn Select Case Get_Extension(Fn) 'ファイル名から拡張子取得 Case "xls", "xlsx", "xlsm" 'Excel97-2003,Excel2007以降 Set objOffice = Excel.Application
With objOffice.Workbooks.Open(Path) ★ .Worksheets(1).Visible = xlSheetHidden .ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Openafterpublish:=False .Close False End With
Case "doc", "docx" 'Word97-2003,Word2007以降 Set objOffice = CreateObject("Word.Application") With objOffice.Documents.Open(Path) .ExportAsFixedFormat OutputFileName:=filePath, _ ExportFormat:=17 .Close End With objOffice.Quit Case "ppt", "pptx" 'Powerpoint97-2003,Powerpoint2007以降 Set objOffice = CreateObject("Powerpoint.Application") With objOffice.Presentations.Open(Path) .SaveAs Filename:=filePath, FileFormat:=32 .Close End With objOffice.Quit Application.DisplayAlerts = True End Select End Sub
★を付けた場所がエラーで黄色くなっています。
(ある人) 2022/02/24(木) 14:06
やっぱりよく分かりませんが、
★の場所でエラーになったときの、Path の値はどうなってますか? そのPathで指定されたファイルもPDF化ができてるんですか? (´・ω・`) 2022/02/24(木) 15:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.