[[20231214113043]] 『ハイパーリンク先を印刷したい』(カサブランカ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ハイパーリンク先を印刷したい』(カサブランカ)

マクロ初心者なもので教えて頂きたいです。
excelのセルN2とセルN3にハイパーリンクが挿入されています。
ハイパーリンク先を開かずにハイパーリンク先のシートを印刷をかけたい思っています。
某知恵袋で似たような質問があったので、試みましたが、ダメでした。
Rangeの()をN2,N3に変えても意味が無いのでしょうか?
下記知恵袋解答より引用。
Sub PrtLink()
Dim lnk As Hyperlink
For Each lnk In Range("N2,N3").Hyperlinks
If lnk.Address <> "" Then
Workbooks.Open lnk.Address
ActiveWorkbook.PrintOut
DoEvents
ActiveWorkbook.Close False
End If
Next
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 そのマクロはハイパーリンク先のブックを開いて印刷するものだがそれで構わないのだろうか?
(ねむねむ) 2023/12/14(木) 11:43:35

コメントありがとうございます。
できればブックも開かないで印刷できればと思っています。
(カサブランカ) 2023/12/14(木) 11:51:38

 マクロの最初と最後に、それぞれ
 Application.ScreenUpdating = False
 Application.ScreenUpdating = True
 を入れればよいと思いますよ。

(xyz) 2023/12/14(木) 13:11:20


XYZ様コメントありがとうございます。
下記みたいな感じでしょうか?
Application.ScreenUpdating = False
Sub PrtLink()
Dim lnk As Hyperlink
For Each lnk In Range("N2,N3").Hyperlinks
If lnk.Address <> "" Then
Workbooks.Open lnk.Address
ActiveWorkbook.PrintOut
DoEvents
ActiveWorkbook.Close False
End If
Next
End Sub
Application.ScreenUpdating = True
(カサブランカ) 2023/12/14(木) 13:24:17

 もちろん、Sub PrtLink()プロシージャの中に、です。

 それと、そのブックが複数のシートで構成されていると、
 すべてのシートが印刷対象になるかもしれません。
 ねむねむさんは、そのことを懸念されたのでしょうか。

 もし、リンク指定で"ブックマーク"を用いて、
 特定のシートの印刷範囲が指定されているなら、
 以下のようなマクロでよいと思います。

 もし、単独のシートならば、今のままでよいと思います。

 Sub PrtLink()
     Dim lnk   As Hyperlink
     Application.ScreenUpdating = False
     For Each lnk In Range("N2,N3").Hyperlinks
         If lnk.Address <> "" Then
             Workbooks.Open lnk.Address
             '''ActiveWorkbook.PrintOut
             Range(lnk.SubAddress).PrintOut
             DoEvents
             ActiveWorkbook.Close False
         End If
     Next
     Application.ScreenUpdating = True
 End Sub

(xyz) 2023/12/14(木) 13:42:00


[[20150922112740]] 『ファイルを開かないで印刷』
も参考になるかと。
(通りすがり) 2023/12/14(木) 13:42:28

コメント頂いた皆様。
ありがとうございます。
上手くできました。
(カサブランカ) 2023/12/14(木) 16:34:47

挫折しました。
コンピューターの電源シャットダウンし、再度始動すると「visual basic for applivations 400」の
エラーがでてしまいます。
このファイルは会社の共有フォルダに保存しているファイルになります。
念のため、自分のデスクトップ上にコピーしたファイルもあったので、そこでマクロを実行すると上手く開始しました。
そのため、共有フォルダのpathが必要なのか?と思い、mypath = "K:\〇\〇\〇\〇"を追加したのですが、ダメでした。
Sub PrtLink()
Application.ScreenUpdating = False
Dim lnk As Hyperlink
Dim mypath As String

mypath = "mypath = "K:\〇\〇\〇\〇""
For Each lnk In Range("N2,N3").Hyperlinks
If lnk.Address <> "" Then
Workbooks.Open lnk.Address
ActiveWorkbook.PrintOut
DoEvents
ActiveWorkbook.Close False
End If
Next
Application.ScreenUpdating = True
End Sub

(カサブランカ) 2023/12/19(火) 09:47:05


 ステップ実行して、lnk.Addressがどのような値か確認できますか?
 それを開く動作は実行できるのでしょうか?
(xyz) 2023/12/19(火) 11:31:32

 (1)
 "共有フォルダにある"ということは、共有ブックということとは違うんですよね。
 もし共有ブックということなら、「ハイパーリンクの挿入または変更」はできない仕様のようですね。
 私は共有ブックの使用経験がないので詳細は知りませんが、
 ネットで検索したところ上記のようになっています。
 念のためにコメントしておきます。

 (2)
 >ステップ実行して、lnk.Addressがどのような値か確認できますか?
 こちらはどうなりましたか?

 こんな風にしてみて下さい。
 If lnk.Address <> "" Then の次の行に、
     Debug.Print lnk.Address
 を入れたうえでステップ実行(F8キーを押しながら一行一行を実行するモードのことです)し、
 イミディエイトウインドウにリンク先の表示されアドレスを確認してください。

 共有フォルダの場合、どこがリンク先なんですか?
 また、リンクそのものをクリックした場合、そこに正常にジャンプするんでしょうか。

(xyz) 2023/12/20(水) 07:51:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.