• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

カブゴンのブログ一覧

2020年05月10日 イイね!

一生使えるカーオーディオのプレイリストを作るツールの開発を始めました

一生使えるカーオーディオのプレイリストを作るツールの開発を始めましたこんばんは。
明日から会社でお仕事。カブゴンです。

いきなりですが、僕は、車内でかける音楽に並々ならぬこだわりを持っています。
季節や昼夜、市街地かワインディングか等、それぞれのシーンに合わせてその都度フォルダを変えます。
しかし、自宅にある音楽のマスターデータは、曲を購入した月ごとにフォルダ管理しています。
ということは、カーオーディオに入れてあるSDカードのデータと自宅のSSDのデータで齟齬が発生してしまいます。そして、SDカードに入っているデータのフォルダ構成はSDカードのパソコンで中身を開かないとわからない状態になっています。
というわけで、自宅にあるマスターデータと車用SDカードデータの連携をきちんとデータベースで管理しながら、柔軟にSDカード内のフォルダ構成(プレイリスト)を変更できるツールをExcelで作ってやろうという企画を開始しました。完成すれば一生使える上に、応用すればスマホのGooglePlayMusicのプレイリストまでも連携させられる可能性を秘めているので結構便利そうです。。。

今日は、ダイアログボックスでフォルダを選択したら、一斉に、曲名とアーティスト名、フルパスをシートに書き込むようにするところまで作りました。その中で各ファイルのアーティスト名の取得に関して、「GetDetailsOf」というコードを使うのですが、ネットにもVBA辞典にも全然その情報が無くて、何回修正してもエラーの連発だったので疲れました。最後は、閉じ括弧の位置が違うだけのことに気づかずに30分以上苦戦してしまいました。(´;ω;`)
ホント、数学苦手なのに頭を使い過ぎて脳みそがブローするかと思いました。笑

音楽の趣味がバレてしますので恥ずかしいですが、今日の成果はこんな感じです。
alt


最後に備忘録としてコードも…
―――――――――――――――――――――――――――――――――――――――
Sub ファイルパス一覧作成()

    '≪A3以降のファイル情報を書き込むセルとD1セルを最初にクリアにする≫
    Range(Cells(3, 1), Cells(Rows.Count, Columns.Count)).Clear
    Cells(1, 2).Clear
    
  
    '≪取得したいフォルダをダイアログボックスを開いて選択する≫
    Dim 指定フォルダのパス As String
  
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "ファイル一覧を作成したいフォルダを選択してください"
        If .Show = -1 Then
            指定フォルダのパス = .SelectedItems(1)
            Cells(1, 2).Value = "情報を取得するフォルダ:" & 指定フォルダのパス
        Else
            MsgBox "中止しました。"
            Exit Sub
        End If
    End With
  
  
    '≪ファイルパス一覧を作成する≫
    Dim myFSO As New FileSystemObject
    Dim myRootFolder As Folder

    Set myRootFolder = myFSO.GetFolder(指定フォルダのパス)

    Cells(3, 1).Select 'ファイル情報を表示する最初のセルを選択する

    ファイルパス書出 myRootFolder '後述の「ファイルパス書出」を呼び出して実行する。
    
    Set myFSO = Nothing 'メモリリークによるエラーを防ぐためにFSOを終了させる
    
       
    '≪拡張子なしのファイル名を書き込む≫
    Dim objFSO As New FileSystemObject
    Dim 拡張子無ファイル名 As String
    Dim フルパス As String
    Dim 行数 As Long
    Dim 最終行 As Long
    
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    
    For 行数 = 3 To 最終行
         
        フルパス = Cells(行数, 5).Value
        拡張子無ファイル名 = objFSO.GetBaseName(フルパス)
        Cells(行数, 2).Value = 拡張子無ファイル名
        
    Next 行数
    
    Set objFSO = Nothing  'メモリリークによるエラーを防ぐためにFSOを終了させる
    
    
    '≪アーティスト名を書き込む≫
    Dim Shell As Variant
    Dim Folder As Variant
    Dim 拡張子付ファイル名 As Variant
    Dim フルパスその2 As Variant
    Dim ファイルのフォルダパス As Variant
    Dim 行数その2 As Long
    Dim 最終行その2 As Long

    最終行その2 = Cells(Rows.Count, 1).End(xlUp).Row

    For 行数その2 = 3 To 最終行その2
        
        拡張子付ファイル名 = Cells(行数その2, 1).Value
        フルパスその2 = Cells(行数その2, 5).Value
        ファイルのフォルダパス = Replace(フルパスその2, 拡張子付ファイル名, "") 'フルパスから拡張子付ファイル名を抜くようにVBAのReplace関数を使った
        Set Shell = CreateObject("Shell.Application")
        Set Folder = Shell.Namespace(ファイルのフォルダパス)
        Cells(行数その2, 3).Value = Folder.GetDetailsOf(Folder.ParseName(拡張子付ファイル名), 20) 'アーティスト名の取得(引数20番がアーティスト名)と書き込み
        
    Next 行数その2

    Set Shell = Nothing  'メモリリークによるエラーを防ぐためにFSOを終了させる
    Set Folder = Nothing  'メモリリークによるエラーを防ぐためにFSOを終了させる
    
    
    '≪最上段を表示した状態にしておきたいのでA3セルを選択状態にする≫
    Cells(3, 1).Select
    
     
    '≪最後に書き出しが完了したことをお知らせする≫
    MsgBox "ファイル情報の書き出しが完了しました。"

End Sub

Sub ファイルパス書出(ByRef myParentFolder As Folder)

    Dim myFolders As Folders
    Dim myFolder As Folder
    Dim myFiles As Files
    Dim myFile As File

    Set myFolders = myParentFolder.SubFolders

    If myFolders.Count <> 0 Then
        For Each myFolder In myFolders
            ファイルパス書出 myFolder
        Next myFolder
    End If

    Set myFiles = myParentFolder.Files

    If myFiles.Count <> 0 Then
        For Each myFile In myFiles
            With ActiveCell
                .Value = myFile.Name  'ファイル名を取得する
                .Offset(0, 4) = myFile.Path 'フルパスを取得する
                .Offset(1, 0).Select
            End With
        Next myFile
    End If
    
End Sub
―――――――――――――――――――――――――――――――――――――――

おしまい。
Posted at 2020/05/10 22:49:34 | コメント(0) | トラックバック(0) | VBA備忘録 | 日記

プロフィール

「今年の桜 http://cvw.jp/b/2574415/44990156/
何シテル?   04/04 16:54
カブゴンと申します。 日記をつけてみようと思い、みんカラを始めました。 よろしくお願いします。
みんカラ新規会員登録

ユーザー内検索

<< 2020/5 >>

     12
3 456 78 9
101112131415 16
1718192021 2223
24252627282930
31      

リンク・クリップ

リコールとナット 
カテゴリ:その他(カテゴリ未設定)
2019/12/07 16:08:25

愛車一覧

ホンダ スーパーカブ90 ホンダ スーパーカブ90
ホンダの超ロングセラー、スーパーカブの90ccモデルに乗っています。主に通勤用です。 4 ...
ホンダ フィット ホンダ フィット
ホンダ フィット(GD3型)に乗っています。 この車は週末にお出かけするのに乗るのがメイ ...
マツダ ロードスター マツダ ロードスター
マツダが『人馬一体』をコンセプトに開発した2シーターオープンカーであるロードスターの二代 ...
トヨタ アルテッツァ トヨタ アルテッツァ
安かったので衝動買いしてしまいました。 青色のアルテッツァ(RS200, 5AT)です。 ...
ヘルプ利用規約サイトマップ
© LY Corporation