
「ファイルにリンク」で貼り付けた図に対して、次のことをしたいと思っています。
(1) リンク先を変更したい
(2) リンクを解除したい(図を埋め込みたい)
Wordでは「配付準備」にある「ファイルへのリンクの編集」で出来ますが、
Excelでは、同様の機能と思われる「リンクの編集」に、「図」のリンク設定はありません。
「図の変更」で「挿入仕直す」といった方法もあるかと思いますが、図のサイズが
変わってしまう(縦横比も変わってしまう)ので、できれば使いたくありません。
しかも、大量に図が貼り付けてあるので、1つずつ設定する方法は避けたいです。
ご教授、よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2です。
誰も見ていないと思いますが、MSXMLでリンクの書き換えをやってみました。ただし、普通にReplaceで書き換えれば十分だと思います。ファイルへのリンクの半角スペースが%20に置き換えられていますので、ご留意下さい。
なお、再圧縮して拡張子を変更してエクセルファイルに戻す際、解凍時生成されたフォルダでなく、その中のファイル群を圧縮しないと、エクセルで開く際にエラーになってしまいます。
Sub changeLink()
Dim oXMLDom As Object, nodelist As Object, reader As Object, writer As Object
Dim i As Long, j As Long
Dim myNodeName As String
Dim loadFile
Dim externalFlag As Boolean
Dim linkFilePath As String, originalLink As String, targetFilePath As String
Dim filename As String, newPath As String, newURL As String
Const tempFilePath As String = "c:\temp.xml"
Set oXMLDom = CreateObject("MSXML2.DOMDocument")
Set reader = CreateObject("MSXML2.SAXXMLReader")
Set writer = CreateObject("MSXML2.MXXMLWriter")
oXMLDom.async = False
oXMLDom.validateOnParse = False
oXMLDom.resolveExternals = False
'Worksheets(1)のみ対応
targetFilePath = "C:\Documents and Settings\hoge\デスクトップ\myUnzipFolder\xl\drawings\_rels\drawing1.xml.rels"
loadFile = oXMLDom.Load(targetFilePath)
newPath = "file:///C:\Documents and Settings\hoge\デスクトップ\Sample Pictures"
Set nodelist = oXMLDom.DocumentElement.SelectNodes("//Relationship")
If nodelist.Length > 0 Then
For i = 0 To nodelist.Length - 1
For j = 0 To nodelist.Item(i).Attributes.Length - 1
myNodeName = nodelist.Item(i).Attributes(j).nodename
Select Case myNodeName
Case "Target"
linkFilePath = nodelist.Item(i).Attributes.getNamedItem(myNodeName).NodeValue
Case "TargetMode"
If nodelist.Item(i).Attributes.getNamedItem(myNodeName).NodeValue = "External" Then externalFlag = True
End Select
Next j
If externalFlag Then
'ここにリンクの書き換え
'スペースを%20に変更している
filename = Right(linkFilePath, Len(linkFilePath) - InStrRev(linkFilePath, "\"))
filename = Replace(filename, "%20", Chr(&H20))
newURL = newPath & "\" & filename
newURL = Replace(newURL, Chr(&H20), "%20")
'Target属性の変更
Call nodelist.Item(i).setAttribute("Target", newURL)
End If
externalFlag = False
Next i
End If
writer.indent = False
' writer.Encoding = "utf-8" '昔は指定しても機能しなかった。最近の状況は不明です。
writer.standalone = True
Set reader.contentHandler = writer
'お約束
Call reader.putProperty("http://xml.org/sax/properties/lexical-handler", writer)
oXMLDom.preserveWhiteSpace = False
reader.Parse oXMLDom.XML
Set oXMLDom = Nothing
'UTF-8に変換して保存
Call adoSaveText(tempFilePath, writer.output, "UTF-8")
FileCopy tempFilePath, targetFilePath
Set writer = Nothing
Set reader = Nothing
End Sub
'========================================================
'ADO.streamを使ってXMLDocumentをUTF-8で書き出す
Private Function adoSaveText(filename, text, charset)
Dim Stream
Dim bin() As Byte
Dim destBuf As String
Set Stream = CreateObject("ADODB.Stream")
destBuf = Replace(text, "UTF-16", charset)
Stream.Type = adTypeText
Stream.charset = charset
Stream.Open
Stream.WriteText (destBuf)
'BOM削除
Stream.Position = 0
Stream.Type = adTypeBinary
Stream.Position = 3
bin = Stream.Read
Stream.Close
Stream.Open
Stream.Write bin
Stream.SaveToFile filename, adSaveCreateOverWrite
Stream.Close
End Function
No.2
- 回答日時:
当方xl2010ですが、VBEでshapeやDrawingObjectのメンバを探ってみたりしましたが、分かりませんでした。
画像挿入の自動記録もきちんと記録できていない様です。Web検索してもこれはという情報に行き当たりません。xl2007以降のエクセルのブックは、ZIP圧縮したXMLファイル群ですので、拡張子を.zipに変更し、解凍して探ってみました。
1.シートの画像情報はたとえばWorksheets(1)の分は\xl\drawings\drawing1.xmlにあります。
画像埋め込み+ファイルにリンクの箇所を抜粋すると、下記の様な内容でした。
<a:blip xmlns:r="http://schemas.openxmlformats.org/officeDocument … r:embed="rId3" r:link="rId4">
埋め込み画像のIdがrId3で、リンク情報がrId4である事を示しています。
2.これに対応するリンク情報はWorksheets(1)の分は\xl\drawings\_rels\drawing1.xml.relsにあります。
埋め込み・リンク形態別のAttributeは下記の様になっていました。
かならずしもrIdの番号順になっておらず、drawing1.xmlと対照する必要がありそうです。
ファイルへリンク
Id:rId2
Target:file:///C:\Documents%20and%20Settings\All%20Users\Documents\My%20Pictures\Sample%20Pictures\Water%20lilies.jpg
TargetMode:External
デフォルト(画像を埋め込み)
Id:rId1
Target:../media/image1.jpg
ファイルへリンク+画像
Id:rId3
Target:../media/image2.jpg
Id:rId4
Target:file:///C:\Documents%20and%20Settings\All%20Users\Documents\My%20Pictures\Sample%20Pictures\Winter.jpg
TargetMode:External
3.実際の埋め込み画像データは全シート分が、\xl\mediaにあります。
以上から、
\xl\drawings\_rels\drawing1.xml.relsのリンク情報を書き換えてやれば、リンク先の対応が可能です。
また、埋め込み画像なら、\xl\mediaの画像ファイルを置換してやれば、画像の変更が可能です。
以上、あまり実用的で無い情報でした。
VBAで拡張子の変更~解凍~MSXMLで画像のリンク情報を取得するところまでやってみましたが、完成する日は来ないと思います。
もっとまともな方法をご存じの方は是非教えて下さい。
No.1
- 回答日時:
「リンクの編集」で図のリンク元も設定しなおすことは出来ますよ。
(リンク元ですよね?)セルのリンクと図のリンクが両方ある場合や、複数の図が同じブックの違う場所のリンクであっても、リンク元は1つしか表示されないので図のリンクが編集できるようには見えないのでは?
同じくリンクの解除も「リンクの編集」でできます。
ただ、上記に書いた理由で、同じブックからリンクしている複数の図を「図1は参照元を変えたいけど図2は元のまま」とか、
同じブックからリンクしているセルと図を「図のリンクは変更したいけど、セルのリンクは元のまま」
というような変更は「リンクの編集」できません。
そのような場合は図を選択して、数式バーに表示されているブック名やシート名を変更することができます。
ただし、この方法では1つずつ設定していかなければなりません。
この回答への補足
早速のご回答、ありがとうございます。
言葉足らずだったようですので補足させて下さい。
ここで言いたかった「図」とは、「画像ファイル(JPGなど)」のことです。
おっしゃるとおり、Excelのセルやグラフをリンクして貼り付けした場合には、
リンクの編集が出来ます。
ですが、画像ファイルを「ファイルにリンク」で挿入した場合には、
ブック内に他のリンクが存在しない場合、リボンの「リンクの編集」が
グレーになってしまい、編集画面すら開くことが出来ません。
説明下手で申し訳ございませんがご理解いただけましたでしょうか。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- その他(Microsoft Office) エクセルの貼り付け「リンクされた図」について 2 2023/08/17 23:54
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Word(ワード) パソコンのソフト WordとExcelについて教えてください。 Excelで作った図形をWordにコ 1 2022/04/01 23:27
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- その他(Microsoft Office) 複数の写真を1枚に印刷 5 2023/05/05 22:41
- その他(Microsoft Office) Wordを変換してExcelに挿入 2 2022/07/04 23:59
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Excel(エクセル) [条件付き書式]の設定順の変更は可能か? 4 2022/12/07 10:37
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントで『図の圧縮』...
-
WORD2010に図を貼付けるとサイ...
-
エクセルに写真の貼り付けが出...
-
PPTで作成した画像をWordに移す...
-
花子のデータを別ソフトで開く
-
エクセルで画像をはみ出させる方法
-
エクセルに画像貼り付けると重...
-
ワード又は一太郎文書にスキャ...
-
EXCELでスキャンした表を真似し...
-
エクセルでシートの背景に画像...
-
ワードの図のプロパティについて
-
写真をトリミングした後のピン...
-
ワード、エクセルに写真を貼り...
-
パワポの図面を縮小して、ワー...
-
ワードに手書きの図を載せたい
-
フォトショップをワードに貼り...
-
Excel2007の「図の挿入」について
-
Word文書に花柄の背景をつ...
-
ワードにJPGを貼り付けると急に...
-
DATAファイルの開き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントで『図の圧縮』...
-
WORD2010に図を貼付けるとサイ...
-
PPTで作成した画像をWordに移す...
-
エクセルに写真の貼り付けが出...
-
エクセルで画像をはみ出させる方法
-
花子のデータを別ソフトで開く
-
パワポの図面を縮小して、ワー...
-
フォトショップをワードに貼り...
-
Word文書に花柄の背景をつ...
-
写真をトリミングした後のピン...
-
エクセルでシートの背景に画像...
-
ワードの図のプロパティについて
-
エクセルに画像貼り付けると重...
-
エクセルで簡単に写真を挿入したい
-
画像を挿入したWordファイルを...
-
ワードに手書きの図を載せたい
-
ワードの図形挿入で赤い「バッ...
-
ワードかエクセルで写真入り報...
-
EXCELでスキャンした表を真似し...
-
ワードにJPGを貼り付けると急に...
おすすめ情報