[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『貼り付けられた画像にその画像ファイルをLINKさせる』(はんにゃ)
WindowsXP、Excel2003 いま マクロでSheet”データ”からimgfilnm(¥像ファイル名.jpg)を読み取り 以下のように、その画像をsheet”系譜図”内の所定の位置に貼り付けています。 課題:この画像をクリックすると 同じソースの画像が(別のSoftの)既定Viewerで大きく表示する 例えばWebPageの画像に元の像をLINKさせるようなことをする、にはどうしたらよいでしょうか?
If imgflnm <> "" Then Set ic = Sheets("系譜図").Range(Sheets("系譜図").Range("D2").Cells(xrb +
2, xcb + 1).Address) Err.Clear 'エラークリア Set secondimg = Sheets("系譜図").Pictures.Insert(ThisWorkbook.Path & imgflnm) ' If Err.Number <> 0 Then '画像挿入時に何らかのエラーが発生したら MsgBox "データ表" & ir & "行の" & ThisWorkbook.Path & imgflnm & " not exist!" & vbLf & Err.Description Else With secondimg .Left = ic.Left: .Top = ic.Top End With Set Cn = shp.AddConnector(msoConnectorCurve, 1, 1, 1, 1) 'コネクタ描画 ※位置は仮決め 実際には表示後手操作で位置やサイズは調整できる Cn.Line.EndArrowheadStyle = msoArrowheadTriangle Cn.Line.DashStyle = msoLineDash Cn.Line.Weight = 1 If InStr(Sheets("系譜図").Range("D2").Cells(xrb, xcb), "▼") > 0 Then Cn.Line.ForeColor.RGB = RGB(255, 0, 0) Else Cn.Line.ForeColor.RGB = RGB(0, 0, 255) End If With Cn.ConnectorFormat .BeginConnect ConnectedShape:=firstRect, ConnectionSite:=2 .EndConnect ConnectedShape:=secondimg.ShapeRange(1), ConnectionSite:=1 '.Type = msoConnectorElbow Cn.RerouteConnections End With End If 'If Err.Number End If ' If imgflnm
既定Viewerというのが関連付けられたアプリということなら、
Sub test() With CreateObject("Wscript.Shell") .Run """D:\My Documents\My Pictures\ラッコ.jpg""" '↑これは、例です。ラッコの画像があったので・・。 End With End Sub
私の環境では、上記でIEに表示されました。
ユーザーフォームを用意して、イメージコントロールに画像を貼り付ける では、駄目なんですか?
ichinose
貼り付けた後、表示位置などを調整すると思いますが その時にハイパーリンクの設定もしておかれては?
基本コードは、マクロの記録で得られると思います。
(HANA)
ありがとうございます まず ichinoseさん助言のコードで試しました。 小生の場合WindowsXPではIEではなく Windows画像とFAXViewerが立ちあがり描画しました つぎに HANAさん助言の記録をして こーどを得て試しました この場合はIEが立ち上がり、表示しました。 この段階で 教えを乞います。 1:.Run """D:\My Documents\My Pictures\ラッコ.jpg"""の(")が3つ要るのですね? 2:.Run """\ラッコ.jpg"""はNGか BooK1と同じホルダにある画像ファイルでも絶対アドレスを要しますか? 3:IEは起動に時間が掛かるので、早いWindows画像とFAXViewerが起動しないでしょうか? Wordsではこれが起動します (hannya)
>1:.Run """D:\My Documents\My Pictures\ラッコ.jpg"""の(")が3つ要るのですね? My Documents こういう名前があると、 .Run "D:\My Documents\My Pictures\ラッコ.jpg"
これだとエラーになります。 "d:\aaa\aaaa.jpg" だと、
.Run "d:\aaa\aaaa.jpg" 'これで大丈夫ですが・・・。
きちんとパス名をわからせるために "で囲みます。
文字列としての"は、""と連続して記述するのですよね?
>BooK1と同じホルダにある画像ファイルでも絶対アドレスを要しますか?
Thisworkbook.path を使ってみたらよいでしょう・・・。
どのアプリが起動されるかは、Windowsの設定ですからねえ。
ichinose
If imgflnm <> "" Then Set ic = Sheets("系譜図").Range(Sheets("系譜図").Range("D2").Cells(xrb + 2, xcb + 1).Address) Err.Clear 'エラークリア Set secondimg = Sheets("系譜図").Pictures.Insert(ThisWorkbook.Path & imgflnm) ' If Err.Number <> 0 Then '画像挿入時に何らかのエラーが発生したら MsgBox "データ表" & ir & "行の" & ThisWorkbook.Path & imgflnm & " not exist!" & vbLf & Err.Description Else End If 'If Err.Number End If ' If imgflnm ' この後の一行を追加した Image Highper Link 2011/11/11 Sheets("系譜図").Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=ThisWorkbook.Path & imgflnm
しかし、張り付いた画像にLinkはしない。多分Item(1)が 定まらない・埒外の値になったからだと思います。 どのようなコードが良いでしょうか?
小生 混乱しています > .Run "D:\My Documents\My Pictures\ラッコ.jpg" ' これだとエラーになります。 > .Run "d:\aaa\aaaa.jpg" 'これで大丈夫ですが・・・。
ドライブ名の大文字 小文字の違いですか? (hannya)
With secondimg .Left = ic.Left .Top = ic.Top
.Select 'for Hyperlinks.' Image Hyper Link 2011/11/11 Sheets("系譜図").Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=ThisWorkbook.Path & imgflnm End With Set Cn = shp.AddConnector(msoConnectorCurve, 1, 1, 1, 1) 'コネクタ描画 ※位置は仮決め Cn.Line.EndArrowheadStyle = msoArrowheadTriangle Cn.Line.DashStyle = msoLineDash Cn.Line.Weight = 1 With Cn.ConnectorFormat .BeginConnect ConnectedShape:=firstRect, ConnectionSite:=2 .EndConnect ConnectedShape:=secondimg.ShapeRange(1), ConnectionSite:=1 '.Type = msoConnectorElbow Cn.RerouteConnections End With
するとばっちりLINKしました。ありがとうございました。 しかし これまで挿入後の画像の上下左右位置 大きさなどをマウス手動で調整できたのですが カーソルは手の形のままで 画像の枠組みがでないので 調整できません。 操作手順でできるのか コードを改修しないといけないのか 両立させる方法はないものでしょうか? 一個か2個なら 一度リンク解除後、位置調整して、再度Linkつけを手操作ですることも可能ですが すこし数があるので。 (Hannya)
(hannya) わかりました。画像枠内でマウスRをクリックすると枠状態になり、位置・サイズが調整できる 其の後枠外でマウスLをクリックするとLINK状態になる これで期待どうりの働きです。ありがとうございました。
あと ViewerがIEではなく、当方WindowsXP Test .Runで起動する画像FAX Viewerにするにはどうするかです 変えたい理由は 立ち上がり時間が遅い、画像表示サイズが簡単に変えられない (Ctrl+)もあるが。 なお Words.Docでは 同じIEが起動するのですが、Open Document ならびにそれから変換したPDFでは 画像は 画像FAXViewerが起動表示します
よろしく おねがいします
>ドライブ名の大文字 小文字の違いですか? いいえ、Aaa aaaa パスに空白があるからです。
新規ブックの標準モジュールにて・・・、
'============================================================= Option Explicit Sub insert_pic() Dim pic As Picture Dim rng As Range Set rng = Range("a1:c10") On Error Resume Next Set pic = ActiveSheet.Pictures.Insert("D:\My Documents\My Pictures\ラッコ.jpg") '↑これは、例です。ラッコの画像があったので・・。
If Err.Number = 0 Then pic.Left = rng.Left pic.Top = rng.Top pic.Width = rng.Width pic.Height = rng.Height pic.ShapeRange.AlternativeText = "D:\My Documents\My Pictures\ラッコ.jpg" pic.OnAction = "disp_pic" End If On Error GoTo 0 End Sub '============================================================= Sub disp_pic() Dim shp As Shape Set shp = ActiveSheet.Shapes(Application.Caller) If shp.AlternativeText <> "" Then On Error Resume Next With CreateObject("Wscript.Shell") .Run """" & shp.AlternativeText & """" End With On Error GoTo 0 End If End Sub
ラッコの画像の変わりに適当な画像ファイルを記述してください。
insert_picを実行してください。画像がシート上に表示されます。
この画像をクリックすれば、規定のアプリで表示されると思います。
規定のアプリは、画像ファイルを右クリックし、アプリから開く とかプログラムの選択 等と言う項目から指定します。
ただ、このVBAコードを使うのが不特定多数のPCということなら、 想定外のアプリが立ち上がっても表示されれば、それはそれでよいと思いますよ!!
ichinose
こんな回答を以前しましたが、参考になりますか? [[20090705210700]] 『ハイパーリンクからFAXと画像のビューアへ』(ムラ) (momo)
(hannya) お礼のコメントが 書き込まれなかったようです
改めて HANAさん Ichinoseさん Momoさん アリがとうございました
結果 希望どうりのIEの代わりにViewer-画像&FAXViewerで表示させれました。 そして 位置サイズ調整と手印MOUSE-Onとの切替も容易です
理解したこと;現行小生のPCでは .RUN 目標ファイルの関連付けのアプリが起動する HyperLinkはIEが起動する
以下が実装したコードです 略 Set ic = Sheets("系譜図").Range(Sheets("系譜図").Range("D2").Cells(xrb + 2, xcb + 1).Address) Err.Clear 'エラークリア Set secondimg = Sheets("系譜図").Pictures.Insert(ThisWorkbook.Path & imgflnm) If Err.Number <> 0 Then '画像挿入時に何らかのエラーが発生したら MsgBox "データ表" & ir & "行の" & ThisWorkbook.Path & imgflnm & " not exist!" & vbLf & Err.Description Else With secondimg .Left = ic.Left .Top = ic.Top .Width = ic.Width .Height = ic.Height ' .ShapeRange.AlternativeText = ThisWorkbook.Path & "\Nagata-Kamon.JPG" .ShapeRange.AlternativeText = ThisWorkbook.Path & imgflnm .OnAction = "disp_pic" ' .Select 'for Image Hyper Link 2011/11/11 ' Sheets("系譜図").Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=ThisWorkbook.Path & imgflnm End With End If 'If Err.Number
略 ' for ClickOn Viewer 画像&FAXviewer instead of IE on HyperLink Private Sub disp_pic() Dim shp As Shape Set shp = ActiveSheet.Shapes(Application.Caller) ' Set shp = Sheets("系譜図").Shapes(Application.Caller) If shp.AlternativeText <> "" Then On Error Resume Next With CreateObject("Wscript.Shell") .Run """" & shp.AlternativeText & """" End With On Error GoTo 0 End If End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.