Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
Mp3(曲)の合計時間計算(2)
投稿日時: 20/03/24 06:22:29
投稿者: Nubo

Mp3(曲)の合計時間計算』の続きとなります。
  https://www.moug.net/faq/viewtopic.php?t=79254
  
もう少し手抜きをしたくなりました。
  
入力として複数のMP3を指定して
 それぞれの曲名と再生時間(曲の長さ)を指定セル(曲名:C3 再生時間:D3)から下方に書き出したいのですができますか ?

  
これが出来れば、手動での曲の入力が必要なくなります。
  
参考になる記事を見つけましたが、VBAなので私には荷が重いです。
  
MP3の「曲の長さ」を調べる / Office TANAKA
 http://officetanaka.net/other/extra/tips16.htm
  
-----------------------------------------------------------
  
以前VBAは、少し利用していましたが、過去の記憶で忘却寸前です。
VBAを利用しないで希望の事が出来れば良いのです無理ですよね。

投稿日時: 20/03/24 14:19:41
投稿者: Nubo

忘却寸前のVBAの思い出しながら作成中です。
 
1)下記コードを標準モジュールのModule1に書き込みました。
 
Sub MP3_List()
    Dim FSO As Variant, SHell As Variant, Folder As Variant
    Dim Songs As Variant, i As Long, Target As String
    Songs = Application.GetOpenFilename(FileFilter:="MP3ファイル,*.mp3", MultiSelect:=True)
    If Not IsArray(Songs) Then Exit Sub
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SHell = CreateObject("Shell.Application")
    Set Folder = SHell.Namespace(FSO.GetFile(Songs(1)).ParentFolder.Path)
    For i = 1 To UBound(Songs)
        Target = FSO.GetFile(Songs(i)).Name
        Cells(i + 2, 3) = Folder.GetDetailsOf(Folder.ParseName(Target), 0)
        Cells(i + 2, 4) = Folder.GetDetailsOf(Folder.ParseName(Target), 27)
    Next i
    Set Folder = Nothing
    Set SHell = Nothing
    Set FSO = Nothing
End Sub
 
 
普通にALT+F8でマクロを表示して呼び出して希望の処理が出来ましたが、
シートにマクロボタンを作成して、ボタンから呼び出す方法でつまずきました。
シートにボタンを作成して下記のコードを入力しましたが
CommandButton1の表示で止まって上手く処理できません。
(エラーは出ませんでした。)
 
何処が悪いのでしょうか ?
 
Private Sub CommandButon1_Click()
  Call Module1
End Sub
 
--------------
Call Module1をCall Mp3_List にしても同じでした。
 
 
 

回答
投稿日時: 20/03/24 14:38:47
投稿者: simple

引用:
Private Sub CommandButon1_Click()
  Call Module1
End Sub
これは、投稿するに当たって手打ちしたものですか?
VBEに実際にあるコードをコピーペイストしてください。
スペルミスがあっても実体がミスなのか、投稿時のミスなのか判別不能です。
 
VBEの上部にあるコンボボックスから選択すれば、
自動でプロシージャ名は作成されるはずですよ。

投稿日時: 20/03/24 17:18:05
投稿者: Nubo

回答ありがとうございます。
 
 
その後、色々試行錯誤しているうちに
 なんとか作動するようになりました。
 
 
事後経過を報告すると
 
最初下記のURLを参考にしました。
http://shuhho.hatenablog.com/entry/excelvba-23
 
 
開発からシート上にActiveXコントロールで
ボタンを選択>配置して名前をMP3_Listに変更。
 
出来たボタンをクリックすると下記のように表示されて
----------------------
Private Sub CommandButton1_Click()
     
End Sub
-----------------------
 
これに最終的には、
 Module1.MP3_List
を追加しました。
 
開発のデザインモードでボタンを選択すると下記のように表示されています。
 
=埋め込み("Forms.CommandButton.1","")
 
 
参考にしたURLでは、下記のように記載されていますが問題ないのでしょうか ?
 
=EMBED(""Forms.CommandButton.1","")
 

トピックに返信