質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

受付中

【VBA】画像スクレイピングについて

mashison.jr
mashison.jr

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

2回答

-1評価

0クリップ

278閲覧

投稿2022/05/12 21:49

エクセル内にある画像URLをスクレイピングして、指定するフォルダに保存するVBAを作成したつもりでしたが、何度やってもfilenameにてエラーが発生します。
その他にもエラー箇所がありましたら、ご教授いただけますでしょうか。
また、以下コードにファイル名をL列に並んだB列のものに出来るようにしたいです。
※office365 64ビットとなります。
何卒よろしくお願いいたします。

Option Explicit
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As LongPtr

'簡略化【案】
Sub downloadimages()
Dim lastrow As Long
Dim rc As Long
On Error Resume Next
Dim downloadStatus As Variant
Dim url As String
Dim destinationFile_local As String
MkDir "C:\Users\Guest\Pictures"
lastrow = Sheet2.Range(Range("L2"), Range("L2").End(xlDown)).Count

For rc = "TK0804" To lastrow
url = Sheet2.Cells(rc, 1).Value
desttinationFile_local = "C:\Users\Guest\Pictures" & Filename(rc - 1 & ".jpg")
downloadStatus = URLDownloadToFile(0, url, desttinationFile_local, 0, 0)

Next
nsgBox "☆完了☆"
Call openFolder("C:\Users\Guest\Pictures")
End Sub
Sub openFolder(path As String)

Shell "C:\Windows\Explorer.exe " & path, vbNormalFocus

End Sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mashison.jr

2022/05/13 00:59

お忙しい中ありがとうございます。 ミスを含めて修正しましたが、実行時エラー53が出る状況でした。 お手数ですがご指摘頂けると幸いです。 Option Explicit Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias _ "URLDownloadToFileA" (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal _ szFileName As String, ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As LongPtr '簡略化【案】 Sub downloadimages()   Dim lastrow As Long   Dim rc As Long   Dim downloadStatus As Variant   Dim url As String   Dim desttinationFile_local As String   MkDir "D:\test"   lastrow = Sheet2.Range(Range("L2"), Range("L2").End(xlDown)).Count  For rc = 1 To lastrow     url = Sheet2.Cells(rc, 1).Value     desttinationFile_local = "D:\test" & rc & ".jpg"     downloadStatus = URLDownloadToFile(0, url, desttinationFile_local, 0, 0)  Next  MsgBox "完了"  Call openFolder(D:\test) End Sub Sub openFolder(path As String)  Shell "C:\Windows\explorer.exe" & path, vbNormalFocus End Sub
hatena19

2022/05/13 01:50

どの行でエラーが出ますか。 また、エラーメッセージは何でしょうか。
hatena19

2022/05/13 02:12

とりあえず明らかな間違いは、 Call openFolder(D:\test) ↓ Call openFolder("D:\test") Shell "C:\Windows\explorer.exe" & path, vbNormalFocus ↓ Shell "C:\Windows\explorer.exe " & path, vbNormalFocus
mashison.jr

2022/05/13 13:53

お忙しい中、ご協力いただきありがとうございます、 あれから、いろいろと見直しをしまして、以下のようにコードを直したのですが、 未だにCall openFolder("D:\test")にてエラー35が出てわかりませんでした。 Option Explicit Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias _ "URLDownloadToFileA" (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal _ szFileName As String, ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As LongPtr '簡略化【案】 Sub downloadimages() Dim lastrow As Long Dim rc As Long Dim downloadStatus As Variant Dim url As String Dim desttinationFile_local As String Dim Sheet2 As Worksheet Set Sheet2 = Worksheets("Sheet2") MkDir "D:\test" lastrow = Sheet2.Range(Range("L2"), Range("L2").End(xlDown)).Count For rc = 1 To lastrow url = Sheet2.Cells(rc, 1).Value desttinationFile_local = "D:\test" & Sheet2.Cells(rc, "A").Value & ".jpg" downloadStatus = URLDownloadToFile(0, url, desttinationFile_local, 0, 0) Next MsgBox "完了" Call openFolder("D:\test") Shell "C:\Windows\explorer.exe" & path, vbNormalFocus End Sub
hatena19

2022/05/14 02:16

回答にコードを追記しましたのでそれを試してみてください。
mashison.jr

2022/05/15 00:57

コードの修正等しましたが、エラー75が解決できず、苦戦しております。 可能性ある箇所はどちらになるのでしょうか? パスがみつからないことについて、いろいろ調べていますが、検討つかない状況でした。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。