- ベストアンサー
エクセルに貼った画像の自動更新
ウェブ上で毎日更新される画像があり、それをコピーしてエクセルに貼り付ける作業をしているのですが、毎回手作業でコピペしています。沢山あるので、自動更新する方法はないかと思案しています。 ただし、自動更新する前の状態のファイルは前日のデータとしてそのまま別のファイルとして保存しておきたいのですが、そういったことは可能でしょうか? ちなみに、その更新される画像のURLは変化することなく固定です。 なにかよい方法があれば教えて下さい。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。Wendy02です。 >html形式のファイルで編集して最新のデータを作成。その後、他のファイル形式(エクセル、ワードかPDFあたり)で保存すれば でしたら、Html ファイル自体を名前を換えて、日付などを番号にして保存するという方法もあると思います。画像保存のための、下位フォルダが掘られてしまいますけれども。ExcelやWordの場合は、画像自体を別のものに換えてしまいます。だから、元の画像を失っても、Office上には残ります。その分、ファイルサイズは、ものすごく大きくなります。Html形式で保存していれば、格段にファイルサイズは小さくてすみます。もちろん、pdfが一番軽いし手軽で、管理しやすいですね。何よりも安定しています。 それと、以前使っていたの記憶だけですが、「ダウンロードNinja 」は、時系列で並べますが、それも、自動的に特定の時間に取得してくるということをしていましたね。とにかく、私のマクロのように1個1個ではなく、3個同時とかですから、猛烈に採取するのが速かったでした。なぜ、今はやっていないかというと、あれもこれもやっていたら、膨大な情報量になって管理できなくなってしまいました。^^;
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。#1 のWendy02です。 以下のサイトを元に、作ってみました。 http://homepage.mac.com/catincat/photo/flowers/index.html 注意:Excelでは、URLを貼り付けただけでは、ハイパーリンクにはなりません。必ず、一度、クリックして、ハイパーリンクで、画像入手先を確認する必要があります。 ハイパーリンクになっていないと、このマクロは作動しません。 シートに、コントロールボタンなどで、ボタンを貼り付け、呼び出し(Call)してください。 'シートモジュール '---------------------------------------------------- Private Sub CommandButton1_Click() 'コマンドボタン用 Call Main End Sub '---------------------------------------------------- 以下は、必ず、標準モジュールに登録して、 '---------------------------------------------------- '標準モジュールに設定します。 Option Explicit 'ツール-参照設定:Microsoft Internet Control Private IE As InternetExplorer Private cnt As Integer Sub Main() Dim c As Range 'B2 を基点に、B列に隙間なくURLを書く '明示的に、オートメーションオブジェクトをつくる Set IE = CreateObject("InternetExplorer.Application") For Each c In ActiveSheet.Range("B2", ActiveSheet.Range("B65536").End(xlUp)) '必ず、URLデータは、ハイパーリンクでなくてはなりません。 'ハイパーリンクで、入手先を事前にチェックしてください。 If c.Hyperlinks.Count > 0 Then If Len(c.Offset(-1).Value) > 1 Then GetImage_IE c.Hyperlinks(1).Address, c.Offset(, -1).Value Else MsgBox "セル番地とURLのどちらかが不足しているので、終了します。", vbCritical GoTo Quit End If End If Next c Quit: IE.Quit Set IE = Nothing End Sub Sub GetImage_IE(ByVal URL As String, ByVal strRng As String) Dim FileName As String Dim shp As Shape FileName = Mid(URL, InStrRev(URL, "/") + 1) On Error GoTo ErrHandler With IE .Visible = False '非表示 .Navigate URL Do While .Busy DoEvents Loop Do Until .ReadyState = 4 DoEvents Loop If InStr(.Document.mimetype, "Image") > 0 Then .ExecWB 17, 0 'SelectAll .ExecWB 12, 0 'Copy 'シートの画像のチェック Application.ScreenUpdating = False For Each shp In ActiveSheet.Shapes If Not Intersect(Range(shp.DrawingObject.TopLeftCell, shp.DrawingObject.BottomRightCell), Range(strRng)) Is Nothing Then shp.Delete End If Next shp ActiveSheet.Range(strRng).Select ActiveSheet.Paste Application.ScreenUpdating = True End If DoEvents cnt = cnt + 1 ErrHandler: If Err.Number > 0 Then MsgBox Err.Number & " : " & Err.Description & vbCrLf & _ cnt & "回目で失敗しています。終了します。" IE.Quit Set IE = Nothing End End If End With End Sub '---------------------------------------------------- ワークシート '---------------------------------------------------- A B 1 位置 写真のURL 2 A15 http://homepage.mac.com/catincat/photo/flowers/preview/flower1.jpg 3 A20 http://homepage.mac.com/catincat/photo/flowers/preview/flower2.jpg 4 A25 http://homepage.mac.com/catincat/photo/flowers/preview/flower3.jpg 5 G15 http://homepage.mac.com/catincat/photo/flowers/preview/flower4.jpg 6 G20 http://homepage.mac.com/catincat/photo/flowers/preview/flower5.jpg 7 G25 http://homepage.mac.com/catincat/photo/flowers/preview/flower6.jpg
補足
ご回答ありがとうございます。 連絡が遅くなってごめんなさい。今更になりますが、マクロはわからないので、せっかくいろいろと考えていただいたのですけれど使うことができず残念です。 それと、今までエクセルのみだったので、その延長線上で質問していたのですが、希望している操作ができるのなら他のソフトやファイル形式でもいいことに気がつきました。(個人の趣味的ファイルなので) 途中から質問の趣旨を変えてしまうことになってしまい申し訳ありませんが、今考えているのは、html形式のファイルで編集して最新のデータを作成。その後、他のファイル形式(エクセル、ワードかPDFあたり)で保存すれば画像の部分が更新されずに過去のデータとしても残せるのではないかと試行錯誤しています。 勝手なこと言って申し訳ありません。 追伸 「ダウンロードNinja 」のような便利なソフトも教えていただきありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 少し、考えてみました。 VBAがお分かりになれば出来ますが、個々の設定など、個人のプライバシーの問題もあるでしょうから、ご自身でやっていただかないと無理なのですね。 どういう点かというと、URLが固定とおっしゃっていますが、私の考えた方法は、URLの拡張子 jpg など、1枚の画像で一意の(1個しかない)ものでないといけません。今回考えてみたものは、インターネットのWebサイトの画像名を直接、コピー&ペーストする方法です。URLの中に複数の画像を、ワークシートの画像と、一対一で、貼り付けしなおす方法は、自動で行うには、何かすごくややこしい気がして考えておりません。 貼り付ける場所の指定と、画像単独のURL を別途ワークシートに書いていただくことになります。 もう少し、具体的な内容で、サンプルのサイトをご指定になれば、こちらも説明しやすいかと思います。 ただ、私個人としては、あまりExcelで、画像を常時入れ出しで、大量に取り扱うというのは、何かのトラブルがないとも限りません。もちろん、手動でも発生はしますが、マクロで行うことで、トラブルの発生の確率が上がります。 >自動更新する前の状態のファイルは前日のデータとしてそのまま別のファイルとして保存しておきたいのですが、そういったことは可能でしょうか? それはともかく、そのようなソフトウェアがあったような気がします。 アクセスするたびに、ログとして取ってくるものです。 「ダウンロードNinja 」 http://www.ifour.co.jp/product/dln4/ 以前のバージョンで、掲示板のログを採っていたことがあります。
お礼
こんにちは。何度もありがとうございます。 フロントページでのレイアウトが完了しました。 画像の挿入は直接web上のファイルを指定したので、これ以降画像の張り替えは不必要となりました。 毎日一度IEでファイルを開いてPDFに変換するのを忘れないようにするだけでよくなりました。\(^o^)/ いろいろご助言有難うございました。