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

カブゴンのブログ一覧

2020年05月31日 イイね!

例のExcelでオーディオのプレイリストを管理するプログラムができました

例のExcelでオーディオのプレイリストを管理するプログラムができましたこんにちは。
車やバイクのトラブルが発生したら、とりあえず KURE5-56 を噴射する男、カブゴンです。
これで大概のことは解決します。笑

今日はフィットのボンネットを開くと、ストラットタワーバーの取り付け部に腐食(錆)を発見した上に、結構浸潤が進んでいたため、カーマホームセンターでちょっと高級なやつを買ってきて噴射しておきました。
alt



さて、先月(だったっけ?)にブログに書いた、一生使えるカーオーディオのプレイリストを管理するExcel VBAが完成しました!!!!!!パチパチパチパチ

このプログラムは2段構えになっています。
まずは、パソコン内部や外付けHDD(SSD)に保存された音楽の一覧をExcel上に書き出し、データベース化するセクションです。
曲名のほか、アーティスト名、フルパス、再生用のハイパーリンクボタンが列記されます。
alt


そして、各曲を格納したいフォルダをプルダウンで選択し、
alt


次のセクションでは、フォルダ分け実行ボタンを押し、保存したいSDカードやUSBメモリを選択すると、あっという間に、各曲を振り分けてくれます。

下記にコードを記述しますが、作成途中は、楽曲一覧を取得する部分で、2層3層…と何層にもなるフォルダ分、取得プログラムを再帰させるところがチンプンカンプンでした。
一方、フォルダ振り分けの際も、3階層分のフォルダを自動生成させるので「また再帰かぁ」と思いましたが、コードを適当に書いてみたら意外とあっさり動きました。
本来ならエラーを出しそうなコードなのに何で動いたんだろう……?
まぁ動くんだからいっか!!(適当)

ではコードを…
(1)楽曲データを取得し一覧化する
――――――――――――――――――――――――――――――――――――――‐
Sub ファイルパス一覧作成()

    '≪A~E列の情報を書き込むセルとB1セルとI1をクリアし、F~H列のフォルダ分け欄は数式と値のクリアを最初に行う。ついでに、念のためそれ以外のセルもクリアする≫
    Range(Cells(3, 1), Cells(Rows.Count, 5)).Clear
    Cells(1, 2).Clear
    Cells(1, 9).Clear
    Range(Cells(3, 6), Cells(Rows.Count, 8)).ClearContents
    Range(Cells(3, 9), Cells(Rows.Count, Columns.Count)).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を終了させる
    
    
    '≪再生用ハイパーリンクを作る≫
    Dim フルパスその3 As String
    Dim 行数その3 As Long
    Dim 最終行その3 As Long
    
    最終行その3 = Cells(Rows.Count, 1).End(xlUp).Row
    
    For 行数その3 = 3 To 最終行その3
        
        フルパスその3 = Cells(行数その3, 5).Value
        ActiveSheet.Hyperlinks.Add Anchor:=Cells(行数その3, 4), Address:=フルパスその3, TextToDisplay:=Cells(行数その3, 2).Value
            
    Next 行数その3
    
    
    '≪最上段を表示した状態にしておきたいので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
―――――――――――――――――――――――――――――――――――――‐

(2)楽曲をフォルダ分けする
――――――――――――――――――――――――――――――――――――――‐
Sub 各曲をフォルダにコピーする()
    
    Dim 行数 As Long
    Dim 最終行 As Long
    
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row


    '≪コピー先のドライブフォルダを指定する≫
    Dim 指定ドライブフォルダのパス As String
  
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "コピー先にしたいドライブフォルダを選択してください"
        If .Show = -1 Then
            指定ドライブフォルダのパス = .SelectedItems(1)
            Cells(1, 9).Value = "コピー先ドライブフォルダ:" & 指定ドライブフォルダのパス
        Else
            MsgBox "中止しました。"
            Exit Sub
        End If
    End With


    '≪第1階層に「車で聞かない」が入力されたときは第2,第3階層にも「車で聞かない」を入力する≫
    
    For 行数 = 3 To 最終行
        
        If Cells(行数, 6).Value = "車で聞かない" Then
            Cells(行数, 7).Value = "車で聞かない"
            Cells(行数, 8).Value = "車で聞かない"
        End If
    
    Next 行数


    '≪データコピー先のフルパスを作成する≫
    Dim データコピー先のフルパス As String
    Dim 第1階層のフォルダ名 As String
    Dim 第2階層のフォルダ名 As String
    Dim 第3階層のフォルダ名 As String
    
    For 行数 = 3 To 最終行
        
        第1階層のフォルダ名 = Cells(行数, 6).Value
        第2階層のフォルダ名 = Cells(行数, 7).Value
        第3階層のフォルダ名 = Cells(行数, 8).Value
        データコピー先のフルパス = 指定ドライブフォルダのパス & "\" & 第1階層のフォルダ名 & "\" & 第2階層のフォルダ名 & "\" & 第3階層のフォルダ名 & "\" & Cells(行数, 1).Value
        Cells(行数, 9).Value = データコピー先のフルパス
        
    Next 行数
    
    
    '≪フォルダを作成する≫
           
    '第1階層のフォルダ作成
    For 行数 = 3 To 最終行
        If Dir(指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value, vbDirectory) = "" Then
            MkDir 指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value
        End If
    Next

    '第2階層のフォルダ作成
    For 行数 = 3 To 最終行
        If Dir(指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value & "\" & Cells(行数, 7).Value, vbDirectory) = "" Then
            MkDir 指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value & "\" & Cells(行数, 7).Value
        End If
    Next
    
     '第3階層のフォルダ作成
     For 行数 = 3 To 最終行
        If Dir(指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value & "\" & Cells(行数, 7).Value & "\" & Cells(行数, 8).Value, vbDirectory) = "" Then
            MkDir 指定ドライブフォルダのパス & "\" & Cells(行数, 6).Value & "\" & Cells(行数, 7).Value & "\" & Cells(行数, 8).Value
        End If
     Next


    '≪音楽ファイルを指定したフォルダにコピーする≫
    Dim コピー元のフルパス As String
    Dim コピー先のフルパス As String
    
    For 行数 = 3 To 最終行
        コピー元のフルパス = Cells(行数, 5).Value
        コピー先のフルパス = Cells(行数, 9).Value
        FileCopy コピー元のフルパス, コピー先のフルパス
    Next 行数


    '≪コピーがきちんと行われたか確認する≫
    Dim コピー先のフルパスその2 As String
    
    For 行数 = 3 To 最終行
        コピー先のフルパスその2 = Cells(行数, 9)
        If Dir(コピー先のフルパス) <> "" Then
            Cells(行数, 10).Value = "OK"
        Else
            Cells(行数, 10).Value = "NG"
        End If
    Next 行数
    
    
    '≪全ての処理が完了したメッセージを表示する≫
    MsgBox "コピーが完了しました。"
    
End Sub
――――――――――――――――――――――――――――――――――――――‐
おしまい。
Posted at 2020/05/31 14:27:03 | コメント(0) | トラックバック(0) | VBA備忘録 | 日記
2020年05月24日 イイね!

夜景ランキング第8位 その3

夜景ランキング第8位 その3こんにちは。
金曜日でコロナ対策の勤務体制が終わり、明日から通常勤務体制です。カブゴンです。
なんか、長期休暇の最終日みたいな気分です↓↓笑

さぁ、今日は、夜景ランキングの続きを進めたいと思います。
第8位の3箇所目です。「第8位どんだけあんねん!!」って感じですね。笑

第8位 文京シビックセンター
東京都文京区役所の展望台です。無料で行くことができます。
人は少なめなので、好きな角度でゆっくり撮影ができます。
三脚は使用不可ですが、テーブルがあり、カメラは固定できます。また、ガラスによる映り込みが少ないように、ガラスが斜め向きに設置されています。
すごく天気の良い日は、新宿越しに富士山が見えるようです。
僕が行った日は残念ながらそこまで天気の良い日ではありませんでした。

alt


alt


alt

奥に見えるスカイツリーがラスボスの居城に見えます。笑

おしまい。

ここまでの夜景ランキングはコチラ↓↓

第20位-第19位

第18位-第17位

第16位

第15位

第14位

第13位

第12位

第11位

第10位

第9位
第8位
Posted at 2020/05/24 11:34:19 | コメント(0) | トラックバック(0) | お出かけ | 日記
2020年05月22日 イイね!

富山の本気

富山の本気

こんばんは 

10分間で16,000円を溶かす男、カブゴンです。

現在、新型コロナウイルスのワクチンや治療薬を巡ってバイオ関連株の上昇が激しくなっています。しかし同時に下落幅も大きくなっています。 このビッグウェーブに乗じて僕もバイオ銘柄株取引に参戦してみました。その結果、撃沈しました(´;ω;`)

それも含めて、ここまでの運用成績は約13%のプラスで推移しています。さらに決算の配当がこれから入ってくるので、運用成績はもう少し上昇します。

しかし、以前にもお話ししたように、現在の株価は実体経済にそぐわないほど高い状態と考えられるので、今月に各社発表された2019年度決算を見守った後、次々と株を売却し、現金保有率を7割まで上げて慎重に運用しています。

その結果、現在保有している株は日本電気(NEC)と都築電気の2社だけです。この2社は、2019年度決算で好調な利益をあげました。都築電気は来期の決算予想を発表しましたが、その値が新型コロナウイルスによる大幅減益が予測されるものでした。そのため株価は大きく下げましたが、相当安全側をみた予測だと考えられるので、時期に株価は戻るものとみて保有し続けています。

あとは、ES細胞やiPS細胞による再生医療の臨床試験が加速していることから、そのあたりの銘柄をタイミングを見て売買するという感じです。 ただし、ES細胞やiPS細胞関連銘柄は新型コロナウイルスのワクチンにも関わっていることから、その動乱に巻き込まれるときがあるので若干怖いところではあります。



さて、4月の終わりに Twitter 上で「 富山の本気」というワードと写真が急上昇しました。 富山市街地や高岡市の雨晴海岸から立山連峰を望遠レンズで撮影した写真で、その美しさが話題を呼びトレンドになりました。今日は勝手にその「富山の本気」に乗っかりたいと思います 。笑


まずは、富山駅の北口から歩いて10分くらいのところにある環水公園から撮影した写真です。

alt

通称「世界一美しいスタバ」が写っていますね。


望遠を使うとこんな感じになります。

alt


夕方になると、立山連峰が赤く染まります。

alt


次は射水市の海王丸パークから新湊大橋方面を撮影。

alt


次はぐっと立山に近づいて、常願寺川の大日橋から。

alt


alt


次は少し離れて、富山市中心部の西端、神通川の左岸から。

alt


alt

高さ111mのインテックビルが富山を象徴しています。



そして最後は、立山連峰撮影で最も有名であろう呉羽山から撮影した写真です。Twitterの「富山の本気」の写真もここから撮影されています。

呉羽山は富山市の西端付近に位置していますので、東方向に富山市街地と立山連峰が見られます。

alt


alt


alt


alt


北陸地方は12月から3月までほとんど晴れの日がないので、「立山に雪のある季節」に、「夕方までスッキリした青空」で、「よく冷えて霞が無い」という条件が揃うのが激レアです。年に数回と言われています。それに加え、僕自身の休日と重なってくれなければならないので、なおさら希少です。

またこんな日に出会えるでしょうか???


おしまい。

Posted at 2020/05/22 22:15:12 | コメント(0) | トラックバック(0) | お出かけ | 日記
2020年05月17日 イイね!

【悲報】再度山で事故りました。

【悲報】再度山で事故りました。こんばんは。
カブゴンです。

いきなりですが、神戸の再度山ドライブウェイで盛大に法面に乗り上がってしまいました。。。
alt


左フロントがグニャグニャになって自走不可です。


もちろん、PCゲーム『Assetto Corsa』の話です。
神戸の再度山のModを入れてみました。今年1月に実際に走ったのですが、再現性がとても高いと思います。
下にリプレイ動画を掲載します。


ドライバー・ボンネット視点


ステアリングの切れがカクカクなのは、貧乏なのでステアリングコントローラーが買えず、ゲームパッドでプレイしているからです。泣

おしまい。
Posted at 2020/05/17 18:00:25 | コメント(0) | トラックバック(0) | Assetto Corsa | 日記
2020年05月16日 イイね!

Python備忘録 ~if文による場合分け~

Python備忘録 ~if文による場合分け~こんばんは。
最近、ず~っと水曜どうでしょうのサイコロシリーズを見ています。カブゴンです。
alt

6分の1の確率で千歳に帰れるのに、九州や四国ばっかり引いちゃうミスターと、愚痴ばっかり言っている大泉さんのやりとりが面白いですね。特に、壇ノ浦レポートが深夜バスの厳しさを物語っています。笑
僕も就職活動時代に東京で面接受けた後、深夜バスで金沢に戻り、朝から県内の面接を受けに行ったこととかありましたが、しんどかったですねぇ。。。寝れないんだよ!!!


さて、今日から新企画。先日のVBA備忘録に続いて、『Python備忘録』を始めたいと思います。今注目のプログラミング言語トップ3に入るであろうPythonです。
インスタグラムをはじめとしたWEBアプリの開発や、機械学習による人工知能の開発まであらゆることに使われるプログラミング言語です。
僕が仕事で使うソフトウェアにもPythonによる自動処理が組める機能があり、単純作業は機械にお任せしてしまおうという目論見です。
コンピュータに処理を任せることには個人的には二つのメリットがあると思っています。
一つ目は人件費削減です。人間がやるより、圧倒的な速さで処理を終わらせてくれます。
二つ目はミスの回避です。人間はミスを犯しますが、コンピュータはプログラムさえ間違っていなければ100%ミスしません。

というわけで、今日の備忘録。
関数を作って、値に応じた結果によって記入する属性を場合分けする方法です。
def reclass(male, female):
     ex = male-female
     if ex > 0:
       return "male"
      elif ex < 0:
       return "female"
      else:
       return "even"

作った関数の引数に入るもの(フィールド)は下記のように代入します。
入力先フィールド名 = reclass(!MALE!, !FEMALE!)

ExcelでいうところのIF関数みたいなものです。

おしまい。
Posted at 2020/05/16 23:20:25 | コメント(0) | トラックバック(0) | Python備忘録 | 日記

プロフィール

「今年の桜 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