[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.