[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ハイパーリンク先のPDFファイルを印刷したいです』(不動産屋)
いつもお世話になります。
物品ごとの商品データ書類をPDFで保管しておりまして、商品管理リスト(エクセル)の商品番号にハイパーリンクを付けてPDFデータにアクセスできるようにしています。
定期的に一部の商品データを抽出して、商品資料(ハイパーリンク先のPDFデータ)を一括で印刷するマクロを作成しようと試行錯誤しています。
以前、ネットや本などで調べて自分なりにアレンジして印刷できるようになったのですが、データを整理していたところ印刷することができなくなりました。
元の通りに戻そうにも既に殆どのデータを移し替えてしまっていますので、新環境に適応するマクロを作りたいです。
ご助言いただけたら幸いです。
素人記述で恐縮ですが現状です。
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub zMapPrintOut()
Dim strPrinterName As String
If Not getPrinterName(strPrinterName) Then MsgBox "プリンターが接続されていません" & vbCrLf & Err.Description, vbCritical Exit Sub End If
Call PrintPDF(strPrinterName)
End Sub
Function getPrinterName(strName As String) As Boolean
Dim intPoint As Integer
getPrinterName = False
strName = Application.activePrinter If strName = "" Then Exit Function
intPoint = InStr(activePrinter, "on") - 2 strName = Left(strName, intPoint)
getPrinterName = True
End Function
Sub PrintPDF(strName As String)
Dim objShell As Object Dim strShellString As String Dim strFile As String Dim i As Integer
Set objShell = CreateObject("WScript.shell")
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Call Sleep(500)
strFile = "..\..\Menu\" & Cells(i, 2) & "\" & Cells(i, 3) & "\" & Cells(i, 1).Value & ".pdf"
Call Sleep(500)
strShellString = "Acrobat.exe /t " & Chr(34) & strFile & Chr(34) & " " & Chr(34) & strName & Chr(34)
Call Sleep(500)
objShell.Run (strShellString)
Call Sleep(500)
DoEvents
Call Sleep(500)
Next i
Set objShell = Nothing
End Sub
あと、結構動作が遅くて難儀しています。
スリープを外すと今度は処理が詰まりすぎて作業できなくなります。
何かアドバイスありましたらお願いできましたら幸いです。
ちなみにファイルの保管先等の大まかなイメージです。
2階層前フォルダ――Menu(フォルダ)――大――中――小.pdf
|
――1階層前フォルダ
|
―― 商品管理リスト(Excel)
|
――※1 セルBに商品分類(大項目)―セルC(中)―セルA(小)
※1 各セルの大中小項目は商品資料のファイルパスになってます。
Menu(フォルダ)>大(フォルダ)>中(フォルダ)>小(PDF)
小.pdfがファイル名です。
strFile = "..\..\Menu\" & Cells(i, 2) & "\" & Cells(i, 3) & "\" & Cells(i, 1).Value & ".pdf"
ちなみに、セルAの欄にはハイパーリンクでPDFにアクセスする。
ということは別の記述で出来ています。
こちらです。
Sub MenuLinkAdd()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row strFile = "..\..\Menu\" & Cells(i, 2) & "\" & Cells(i, 3) & "\" & Cells(i, 1).Value & ".pdf" ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:=strFile Cells(i, 1).Font.Name = "HG創英角ゴシックUB" Cells(i, 1).Font.Size = 10 Next i
End Sub
少し面倒な内容かと思いますが、何卒ご助力お願い申し上げます。
< 使用 Excel:Excel2016、使用 OS:Windows11 >
質問内容が曖昧です。 | 以前、ネットや本などで調べて自分なりにアレンジして印刷できるようになったのですが、 | データを整理していたところ印刷することができなくなりました。 | 元の通りに戻そうにも既に殆どのデータを移し替えてしまっていますので、新環境に適応するマクロを作りたいです。
そのようなこと言われても、第三者がデータもないのに無理ですよ。 こういう場での質問として相応しいものとは思えません。 ご自分でステップ実行なりして、ものごとを整理して分析していくしかないですよ。
なお、一点だけ気づいたことをメモします。 Wsh.ShellのRunメソッドには、プログラムの実行が終了するまでコード実行を待機させるオプションが 第三引数に備えられているので、それを利用されたらいかがでしょうか。 むやみにSleepで時間調整するのは効率が悪いと思います。 ↓参照サイト https://learn.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421(v=msdn.10)?redirectedfrom=MSDN (xyz) 2024/06/20(木) 19:32:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.