アプリ版:「スタンプのみでお礼する」機能のリリースについて

特定の文字を含むフォルダをコピーしたいのですが、ワイルドカード(*)の使い方が悪いようでエラーで止まってしまいます。
特定の文字の後に付いている文字にはアンダーバー「_」や数字、文字が混在しています。スペースは含みません。
正しいコードを教えて下さい。

Private Sub CommandButton1_Click()
Dim FSO As Object
Dim wsh As Object
Dim 特定文字 As Variant

Set FSO = CreateObject("Scripting.FileSystemObject")
Set wsh = CreateObject("WScript.Shell")
Set 特定文字 = Range("A1")

'Cドライブ「test」フォルダ内にあるフォルダ(特定文字を含むフォルダ名)をデスクトップ「テスト用」フォルダにコピーする
FSO.GetFolder("C:\test\" & 特定文字 & "*").Copy wsh.SpecialFolders("Desktop") & "\テスト用\"

Set FSO = Nothing
Set wsh = Nothing

End Sub

A 回答 (2件)

以下のようにしてください。


特定文字はA1セルに記入されていますが、シート名を指定したほうが確実です。回答では、Sheet1のA1セルとしています。シート名はあなたの環境に合わせて適切に設定してください。

Private Sub CommandButton1_Click()
Dim FSO As Object
Dim wsh As Object
Dim 特定文字 As Variant
Dim folder As String
Dim wfolders As Object
Dim wfolder As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set wsh = CreateObject("WScript.Shell")
Set 特定文字 = Worksheets("Sheet1").Range("A1")

'Cドライブ「test」フォルダ内にあるフォルダ(特定文字を含むフォルダ名)をデスクトップ「テスト用」フォルダにコピーする
Set wfolders = FSO.GetFolder("c:\test").subfolders
For Each wfolder In wfolders
If wfolder.Name Like 特定文字 & "*" Then
wfolder.Copy wsh.SpecialFolders("Desktop") & "\テスト用\"
End If
Next
Set FSO = Nothing
Set wsh = Nothing
End Sub
    • good
    • 0

こんにちは



FileSystemObjectのGetFolderメソッドでは、ワイルドカードは使えません。
https://docs.microsoft.com/ja-jp/office/vba/lang …
ですので、既回答のようにフォルダを調べてピックアップするような方法になろうかと思われます。

一方で、VBAのDir関数であればワイルドカードを使用できますので、質問文にご提示のような考え方で、検索することは可能です。
https://docs.microsoft.com/ja-jp/office/vba/lang …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています