プロが教えるわが家の防犯対策術!

ウェブ上で毎日更新される画像があり、それをコピーしてエクセルに貼り付ける作業をしているのですが、毎回手作業でコピペしています。沢山あるので、自動更新する方法はないかと思案しています。

ただし、自動更新する前の状態のファイルは前日のデータとしてそのまま別のファイルとして保存しておきたいのですが、そういったことは可能でしょうか?

ちなみに、その更新される画像のURLは変化することなく固定です。
なにかよい方法があれば教えて下さい。よろしくお願いいたします。

A 回答 (3件)

こんばんは。

Wendy02です。

>html形式のファイルで編集して最新のデータを作成。その後、他のファイル形式(エクセル、ワードかPDFあたり)で保存すれば

でしたら、Html ファイル自体を名前を換えて、日付などを番号にして保存するという方法もあると思います。画像保存のための、下位フォルダが掘られてしまいますけれども。ExcelやWordの場合は、画像自体を別のものに換えてしまいます。だから、元の画像を失っても、Office上には残ります。その分、ファイルサイズは、ものすごく大きくなります。Html形式で保存していれば、格段にファイルサイズは小さくてすみます。もちろん、pdfが一番軽いし手軽で、管理しやすいですね。何よりも安定しています。

それと、以前使っていたの記憶だけですが、「ダウンロードNinja 」は、時系列で並べますが、それも、自動的に特定の時間に取得してくるということをしていましたね。とにかく、私のマクロのように1個1個ではなく、3個同時とかですから、猛烈に採取するのが速かったでした。なぜ、今はやっていないかというと、あれもこれもやっていたら、膨大な情報量になって管理できなくなってしまいました。^^;
    • good
    • 0
この回答へのお礼

こんにちは。何度もありがとうございます。

フロントページでのレイアウトが完了しました。
画像の挿入は直接web上のファイルを指定したので、これ以降画像の張り替えは不必要となりました。
毎日一度IEでファイルを開いてPDFに変換するのを忘れないようにするだけでよくなりました。\(^o^)/
いろいろご助言有難うございました。

お礼日時:2006/08/01 15:51

こんにちは。

#1 のWendy02です。

以下のサイトを元に、作ってみました。
http://homepage.mac.com/catincat/photo/flowers/i …

注意: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/p …
3 A20  http://homepage.mac.com/catincat/photo/flowers/p …
4 A25  http://homepage.mac.com/catincat/photo/flowers/p …
5 G15  http://homepage.mac.com/catincat/photo/flowers/p …
6 G20  http://homepage.mac.com/catincat/photo/flowers/p …
7 G25  http://homepage.mac.com/catincat/photo/flowers/p …

この回答への補足

ご回答ありがとうございます。
連絡が遅くなってごめんなさい。今更になりますが、マクロはわからないので、せっかくいろいろと考えていただいたのですけれど使うことができず残念です。

それと、今までエクセルのみだったので、その延長線上で質問していたのですが、希望している操作ができるのなら他のソフトやファイル形式でもいいことに気がつきました。(個人の趣味的ファイルなので)

途中から質問の趣旨を変えてしまうことになってしまい申し訳ありませんが、今考えているのは、html形式のファイルで編集して最新のデータを作成。その後、他のファイル形式(エクセル、ワードかPDFあたり)で保存すれば画像の部分が更新されずに過去のデータとしても残せるのではないかと試行錯誤しています。
勝手なこと言って申し訳ありません。

追伸
「ダウンロードNinja 」のような便利なソフトも教えていただきありがとうございました。

補足日時:2006/07/30 21:55
    • good
    • 0

こんばんは。



少し、考えてみました。

VBAがお分かりになれば出来ますが、個々の設定など、個人のプライバシーの問題もあるでしょうから、ご自身でやっていただかないと無理なのですね。

どういう点かというと、URLが固定とおっしゃっていますが、私の考えた方法は、URLの拡張子 jpg など、1枚の画像で一意の(1個しかない)ものでないといけません。今回考えてみたものは、インターネットのWebサイトの画像名を直接、コピー&ペーストする方法です。URLの中に複数の画像を、ワークシートの画像と、一対一で、貼り付けしなおす方法は、自動で行うには、何かすごくややこしい気がして考えておりません。

貼り付ける場所の指定と、画像単独のURL を別途ワークシートに書いていただくことになります。


もう少し、具体的な内容で、サンプルのサイトをご指定になれば、こちらも説明しやすいかと思います。

ただ、私個人としては、あまりExcelで、画像を常時入れ出しで、大量に取り扱うというのは、何かのトラブルがないとも限りません。もちろん、手動でも発生はしますが、マクロで行うことで、トラブルの発生の確率が上がります。

>自動更新する前の状態のファイルは前日のデータとしてそのまま別のファイルとして保存しておきたいのですが、そういったことは可能でしょうか?

それはともかく、そのようなソフトウェアがあったような気がします。
アクセスするたびに、ログとして取ってくるものです。
「ダウンロードNinja 」
http://www.ifour.co.jp/product/dln4/

以前のバージョンで、掲示板のログを採っていたことがあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!