ここから本文です

エクセルvbaについて。初心者の為、ご教示下さい。

アバター

ID非公開さん

2019/1/2001:07:39

エクセルvbaについて。初心者の為、ご教示下さい。

フォルダの直下にマクロのエクセルを置き、同フォルダ内にある文書すべてをボタン一つでPDF化させる機能を作成したいです。
文書は、Excel、Word、PowerPointの3種類があります。
ファイル名は元の名前をそのまま流用したいです。

Excel文書のみだったら作成できたのですが、
WordとPowerPointがわかりません。

自分で作成したコードが以下になります。ここにWordとPowerPointを追加したいです。どうか、ご教示下さい…。
また以下のコードですと、ファイル名が.xlsの後ろにいる.pdf と二重になってしまうのもできれば直したいです。
初心者ですのでコードがぐちゃぐちゃで申し訳ありません。
もう少し簡潔に書けるところなどがあれば勉強ためにも教えていただけると幸いです。

------------------

Sub Macro1()
Dim abc As String ′本ツールが格納されているフォルダのパス
′値のSET
abc = ThisWorkbook. Path
Call Macro2 (abc)

End Sub


Sub Macro2 (Path As String)

Dim strFile As String
Dim folder As Ob ject
Dim FSO As Object
Dim strCurpath As String
Dim strAFN As String
im strPDFName As Str ing


Application.ScreenUpdating = False
Application.DisplayAlerts = False

′本ツールと同フォルダのExcelファイル処理
strFile = Dir (Path & "¥" & "*.xls")
Do While strFile <> ″″
′本ツールを処理の対象外とする
If strFile = ThisWorkbook. Name Then
strFile = Dir()
′無限ループ防止
If strFile = ″″ Then
GoTo End_Proc
End If
End If

′ファイルOPEN
Workbooks.Open Filename:=Path & ″¥″ & strFile , UpdateLinks:=0, WriteResPassword:=strPass
Windows (strFile). Activate

′現在のフォルダに保存
strCurpath = ActiveWorkbook Path & ″¥″
str AFN = ActiveWorkbook. Name
Set Fso = createObject ("Excel.Application")
strPDFName = strCurpath & ".pdf"


′PDF出力
pa =ThisWorkbook Path
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & ″¥″ & strFile, quality:=xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, openafterpublish:=False


′OPENしたブックを閉じる
ActiveWorkbook.Close
′次のExcelファイルへ移行
strFile = Dir()
Loop

End_Proc:

End Sub

閲覧数:
114
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

sk_********さん

編集あり2019/1/2013:52:04

これでどうですか。

Sub Sample()
    Dim strFile As String, strET As String, Path As String
    Path = ThisWorkbook.Path
    strFile = Dir(Path & "\" & "*.*")
    Application.ScreenUpdating = False
    Do Until strFile = ""
        If ThisWorkbook.FullName <> Path & "\" & strFile Then
            strET = Get_Extension(strFile)
            Call Conv_PDF(strET, Path & "\" & strFile)
        End If
        strFile = Dir()
    Loop
    Application.ScreenUpdating = True
End Sub

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

Sub Conv_PDF(ByVal et As String, ByVal pt As String)
    Dim filePath As String, objOffice As Object
    filePath = Left$(pt, InStrRev(pt, ".")) & "pdf"
    Select Case et
        Case "xls", "xlsx"
            Set objOffice = Excel.Application
            With objOffice.Workbooks.Open(pt)
                .ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Openafterpublish:=False
                .Close
            End With
        Case "doc", "docx"
            Set objOffice = CreateObject("Word.Application")
            With objOffice.Documents.Open(pt)
                .ExportAsFixedFormat OutputFileName:=filePath, ExportFormat:=17
                .Close
            End With
            objOffice.Quit
        Case "ppt", "pptx"
            Set objOffice = CreateObject("Powerpoint.Application")
            With objOffice.Presentations.Open(pt)
                .SaveAs Filename:=filePath, FileFormat:=32
                .Close
            End With
            objOffice.Quit
    End Select
End Sub

  • アバター

    質問者

    ID非公開さん

    2019/1/2115:42:53

    お返事遅くなりまして、すみません。
    ご教示ありがとうございます。
    頂戴したコードを試してみたところ、Sub Conv_PDFのcase文のところで上手くいかず何も出力されない状況です。
    マクロをF8キーで1行ずつ実行してみていますが、
    どの拡張子のファイルにおいても Case文の後ろのSet以降をすり抜けていってしまいました。
    もし余裕がありましたら、こちらについてお教えいただきたいです。
    申し訳ございません。

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/1/21 22:51:00

本当にありがとうございます!無事作成できました。
助かりましたし、勉強にもなりました。
お忙しい中、手取り足取り教えて頂きありがとうございました。返信がいつも遅くなってしまい申し訳ありませんでしたがご丁寧な対応に感激致しました。

ベストアンサー以外の回答

1〜1件/1件中

fev********さん

2019/1/2113:51:39

こちらのページに「VBSでExcel、Wordを一括でPDFに変換してみる」
というものがありました。convertPdf.vbsというものも作ってみました。
見て行くと説明もしっかりあり納得して進められるでしょう。

https://www.doraxdora.com/blog/2017/12/07/post-3384/

こちらのページに「VBSでExcel、Wordを一括でPDFに変換してみる」...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる