[[20070807103356]] 『MP3からID3タグを読み込みたい』(たんこぶ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『MP3からID3タグを読み込みたい』(たんこぶ)
 いつも参考にさせてもらってます。

 今、手持ちのMP3ファイルの管理にエクセルを使ってるのですが、MP3のID3タグの読み込み方がわかりません。

 指定したフォルダの中にあるアルバム名(フォルダ名)、ファイル名はパスから取り出せるんですが、
 アーティスト情報はID3タグに入っているので、そこの部分が空白になってしまってます。
 他のところが自動で、ここだけ対象のファイルのプロパティ開いてアーティスト情報をコピーしてくるのは大変なんです。

 処理はVBAで行っています。絶対パスの指定するMP3ファイルのID3タグから抽出したアーティスト情報を、
 変数artに格納するという処理を行いたいのです。

 何卒、お助けください。

 win2000・Excel2000

 ID3 の情報はファイルの終わりから128バイトに格納されているようですね。
 http://blogs.wankuma.com/hiro/archive/2007/03/19/67620.aspx
 のあたりが参考になりそうです。

 ご参考まで。
 (Mook)

 Mookさん、回答ありがとう御座います。

 参考のところを所を覗いてみましたが、さっぱりです。
 貼り付けてもエラーが出るので、色々いじってみたんですが、
 もうどこをどういじったのかすらわからなくなりました。
 128バイトの読み込み方もわからないので、お手上げです。

 (たんこぶ)

 excelのvbaからmp3のタグを読む
http://shikanp.blogzine.jp/
 こちらは如何でしょうか?
 (じゅんじゅん)

 じゅんじゅんさん、回答ありがとう御座います。
 すいません。全くわかりません。いじる事すら出来ませんでした。
 処理の一部分として扱いたいのですが、Sub〜をどう削れば良いかわかりません。
 諸事情で、dllとかフリーソフトは使えないんですが・・・・使わないと出来ないんでしょうか?

 わらにもすがりたいんですが、竹の棒ぐらいでないと届かない所に居ると思って助けてください。
 (たんこぶ)

 他サイトですが…

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1112206156

 (Ohagi)

 Ohagiさん、回答ありがとう御座います。

 一通り見たんですが・・・どこを参考にすればよかったのでしょうか?
 (たんこぶ)

 下の方に、そのものズバリEXCELデータがありませんか?

 (Ohagi)

 見ましたが、マクロ内にはID3タグを参照するものは無いようでしたが。
 実際MP3ファイル読み込ませて見ましたが、必要としているアーティスト情報に当たるH2セルには変化がありませんでした。

 どこか見落としがあったのでしょうか・・・。
 (たんこぶ)

 >Artist 30 アーティスト名を入力します。 
 MP3ファイルを登録し、Linkで再生できるようにしたデータベース構築でしょ?
 E列以降は自分で打ち込んで、DBを完成させるのでは?
 (じゅんじゅん)

 ID3v1 のデータのみ対応です。ご参考までに。
 あとはご自身で目的に合わせて変更してください。

 Const readFilePath = "C:\sample.mp3"

 ' ------------------------------------------------------
 Sub main()
 ' ------------------------------------------------------
    Dim id3Area As String
    id3Area = readID3(readFilePath)

    If InStr(id3Area, "TAG") <> 1 Then
        MsgBox "ID3情報はありません"
    Else
        MsgBox "Title=[" & myMid(id3Area, 4, 30) & "]" & vbNewLine _
           & "Artist=[" & myMid(id3Area, 34, 30) & "]" & vbNewLine _
           & "Album=[" & myMid(id3Area, 64, 30) & "]" & vbNewLine _
           & "Year=[" & myMid(id3Area, 94, 4) & "]" & vbNewLine _
           & "Comment=[" & myMid(id3Area, 98, 28) & "]"
    End If
  End Sub

  ' ------------------------------------------------------
  Function myMid(str As String, stPos As Long, slen As Long)
  ' ------------------------------------------------------
     myMid = StrConv(MidB(StrConv(str, vbFromUnicode), stPos, slen), vbUnicode)
  End Function

  ' ------------------------------------------------------
  Function readID3(filePath As String)
  ' ------------------------------------------------------
     Dim fileSize As Long
     fileSize = CreateObject("Scripting.FileSystemObject").getFile(filePath).Size

     Dim readFile As Integer
     Dim readBuffer As String * 129
     readFile = FreeFile
     Open filePath For Binary Lock Read As #readFile

     Get #readFile, fileSize - 127, readBuffer
     Close #readFile
     readID3 = readBuffer
  End Function

 (Mook)

 返事が遅れました。
 Mookさん、回答ありがとう御座います。

 v1のみですか。v2で入ってるのか、何度やっても「ID3情報はありません」としか出ないです。

 あとは自分でなんとかしてみます。それでダメなら諦めます。
 回答者の方々、ありがとう御座いました。
 (たんこぶ)

 たぶん、本当に情報が入ってないんだと思います。
 ID3の情報がきちんと入っているファイルは稀でした。
 一応動作確認はしていますので、きちんと情報のあるファイルは見れるはずです。

 バイナリエディタがあったら、ファイルを開いて最後の部分を見てください。
 入っていれば、文字が見えるはずです。

 それか、紹介されているフリーウェアで情報の有無は確認できると思います。
 ただしタイトルはID3が無くとも、ヘッダから取得しているケースもあるので
 それ以外の情報の有無での確認が必要です。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.