[[20100725070136]] 『フォルダを開くマクロ』(ゴンタ) >>BOT

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

 

『フォルダを開くマクロ』(ゴンタ)
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  '右クリックで該当資料を開く
  If Target.Row > Cells(Rows.Count, 1).End(xlUp).Row Then Exit Sub
  If Target.Count > 1 Then Exit Sub
        Dim Dammy As Variant
        Dammy = Shell("explorer.exe " & ThisWorkbook.Path & "\番号別\" & Target.Value, vbNormalFocus)
  Cancel = True
End Sub

 この様なマクロで、ターゲットと同じ名前のフォルダを
  番号別フォルダの中から開いています
 今回質問したい内容はターゲットとフォルダ名が完全一致ではなく一文字違っても
  開く方法です
 ターゲットの文字数は常に8文字で一文字違う場所は左から5文字目です
  例えばターゲットの内容が
  351r0987の場合でも351rk987でも番号別フォルダの中の
           ~~                        ~~
  351r0987の名前のフォルダを開くマクロです
 Excel2003、WindowsXPです 宜しくお願いします

 こんばんは。
ご質問の内容は、以下のような手順でできるかと思います。

 (1) FileSystemObjectのSubFoldersプロパティで、フォルダ名(.Name)を取得
 (2) LIKE演算子で、「351r?987」と一致するものを取得

 <ご参考>
 「Folderオブジェクト - SubFoldersプロパティ」
http://officetanaka.net/excel/vba/filesystemobject/folder14.htm 

 「正規表現のようなマッチング」
http://officetanaka.net/excel/vba/tips/tips35.htm

 左から5文字目を「?」に変える
  WorksheetFunction.Replace(Target.Value,5,1,"?")

 (コタ)

 コタさん
 返信有難う御座います
 リンク先 Folderオブジェクト - SubFoldersプロパティ を見て、.Countの所を .Nameに変えてマクロを動かしたら
 オブジェクトは、このプロパティまたはメソッドをサポートしていません。
 とのエラーが出て来ます。
 >FileSystemObjectのSubFoldersプロパティで、フォルダ名(.Name)を取得
 とは .Count を .Name に変えると言うのとは違うのでしょうか?(Countの方はフォルダ数が出て来ます)
 お時間が取れた時にお教え下さい。
        (ゴンタ)


 書き方がまずかったですね。正しくは↓ ということでした。

 (1) FileSystemObjectのSubFoldersプロパティで、サブフォルダのコレクションを取得して、
     それぞれのフォルダ名(.Name)を取得

 Nameプロパティは単一のフォルダオブジェクトに対するプロパティなので、上のようなエラーになります。

 SubFoldersとNameを使っているコードを探したら、ここの過去スレにありましたので、ご参照ください。
http://www.excel.studio-kazu.jp/kw/20050711132657.html

 (コタ)

コメント返信:

[ 一覧(最新更新順) ]


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