Excel VBA 質問スレッド №1342 (未解決)

VBAでウェブサイトをPDF保存する方法

投稿者 : あほです     投稿日時 : 2023/03/31(Fri) 19:35:13     OS : 未指定     EXCEL : 未指定
VBAを使い下記を実行したいのですがうまく行きません。
特に保存のところで指定フォルダが開かなかったり、ファイル名が入力されないと言った現象が起きます。
尚、セキュリティの問題もあり何か追加でダウンロード、インストールしたりすることができない環境です。

プログラミング、VBAも含め初心者なもので意図が伝わるか不安ですがご回答お願い致します。


①IEで’ウェブサイト’を開く
②nameに、セルDの4を入力し、nameをクリック
③②の処理後表示されたページをPDFで指定のフォルダに保存する。保存先は「指定フォルダ」、保存ファイル名は②で入力したセルD4の右セルE4を指定
④保存の際、すでに同名ファイルが存在していた場合は既存ファイルを削除して保存、存在しなければそのまま保存
⑤①~④の処理を、D列が空白になるまで繰り返す


SubSave_Webpage_As_PDF()

    ' Create InternetExplorer object
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    
    ' Set worksheet object
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' Get last row of data in column D
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
    
    ' Loop through each row of data starting from row 4
    Dim i As Long
    For i = 4 To lastRow
    
        ' Check if column D is not empty
        If ws.Range("D" & i).Value <> "" Then
        
            ' Set file name from column E and create file path
            Dim fileName As String
            fileName = ws.Range("E" & i - 1).Value ' Use the value from column E in the previous row
            
            ' Add ".pdf" extension if necessary
            If Right(fileName, 4) <> ".pdf" Then
                fileName = fileName & ".pdf"
            End If
            
            Dim objFSO As Object
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Dim folderPath As String
            folderPath = "フォルダ名"
            Dim fullFilePath As String
            fullFilePath = folderPath & fileName
            
            ' Check if file already exists
            If objFSO.FileExists(fullFilePath) Then ' If file already exists, delete it
                objFSO.DeleteFile fullFilePath
            End If
            
            ' Navigate to webpage
            IE.navigate "ウェブサイトURL"
            
            ' Wait until webpage is loaded
            Do While IE.readyState <> 4 Or IE.Busy
                DoEvents
            Loop
            
            ' Get the text box element and enter the value from column D
            Dim txtBox As Object
            Set txtBox = IE.document.getElementsByName("name")(0)
            
            Dim cellValue As String
            cellValue = ws.Range("D" & i).Value
            txtBox.Value = cellValue
            
            ' Click the search button
            Dim btn As Object
            Set btn = IE.document.getElementsByName("name")(0)
            btn.Click
            
            ' Wait until search results are loaded
            Do While IE.readyState <> 4 Or IE.Busy
                DoEvents
            Loop
            
            ' Set printer to "Microsoft Print to PDF"
            Dim originalPrinter As String
            originalPrinter = Application.ActivePrinter
            Application.ActivePrinter = "Microsoft Print to PDF"
            
            ' Print webpage as PDF and save to file path
            Dim tempFilePath As String
            tempFilePath = Environ$("temp") & "\" & fileName ' Create temporary file path
            IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 0, True ' Print as PDF and show "Save As" dialog
            objFSO.MoveFile tempFilePath, fullFilePath ' Move temporary file to specified file path
            
            ' Reset printer to original printer
            Application.ActivePrinter = originalPrinter
            
        End If
    Next i
    
    ' Close InternetExplorer object
    IE.Quit

End Sub

スポンサーリンク
[返信 1] Re : VBAでウェブサイトをPDF保存する方法
投稿者 : ヘンリー     投稿日時 : 2023/04/03(Mon) 11:05:09
>尚、セキュリティの問題もあり何か追加でダウンロード、インストールしたりすることができない環境です。
IEは2022年6月16日にサポートが終了しています。
セキュリティの問題があるなら、IEを使う事をやめた方が良いと思います。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-04-05 07:41:43 )
タイトルとURLをコピーしました