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

マクロについて教えてください。
下記のマクロは以前教えて頂いたマクロです。
マクロを実行すると 指定セル値シート名「青紙表」のセル値「R18」に表示されている、数字と同じ数字を含むフォルダをマクロ有効ブックが保存されているフォルダ内にコピーできます。
マクロを実行し、対象フォルダが作業フォルダ内にコピーされた後は
コピー元のフォルダは不要になりますので
コピー後に不要フォルダを削除出来る方法を教えてください。
例えば
セルR18に「12345678」と表示されており
検索指定フォルダ先
「\\nas-sp01\share\確認部\■01_敷地照会回答書\8」内に
「ERI12345678(回答)テスト」のフォルダがあると
指定セル値「12345678」とフォルダ名の数字「12345678」とが一致いますので
「ERI12345678(回答)テスト」が作業フォルダにコピーされます。
コピー後は「\\nas-sp01\share\確認部\■01_敷地照会回答書\8」内にあるコピー元の「ERI12345678(回答)テスト」が不要になりますので、削除したいのですが
このマクロに追加のコードで削除出来る方法を教えてください。
現状のマクロ
Sub 行政回答フォルダ確認()
Dim i As Long
Dim FSO As Object
Dim strKeyword As String
Dim strFolderPath As String, strFolderName As String
Dim arrMoveFolders As Variant
Dim strOriginPath As String, strDestPath As String
If MsgBox("フォルダを検索しますか", vbOKCancel) <> vbOK Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
strKeyword = CStr(Sheets("青紙表").Range("R18").Value)
If strKeyword = "" Then MsgBox ("キーワードが空白です"): Exit Sub
strOriginPath = "\\nas-sp01\share\確認部\■01_敷地照会回答書"
strDestPath = ThisWorkbook.Path
If Right(strDestPath, 1) = "\" Then strDestPath = Left(strDestPath, Len(strDestPath) - Len("\"))
ReDim arrMoveFolders(0 To 1, 0 To 0)
For i = 0 To 9
strFolderPath = strOriginPath & "\" & i
strFolderName = Dir(strFolderPath & "\*" & strKeyword & "*", vbDirectory)
Do Until strFolderName = ""
If Replace(strFolderName, ".", "") <> "" Then
If arrMoveFolders(0, 0) <> Empty Then ReDim Preserve arrMoveFolders(UBound(arrMoveFolders, 1), UBound(arrMoveFolders, 2) + 1)
arrMoveFolders(0, UBound(arrMoveFolders, 2)) = strFolderPath & "\" & strFolderName
arrMoveFolders(1, UBound(arrMoveFolders, 2)) = strFolderName
strFolderName = Dir
End If
Loop
Next
If arrMoveFolders(0, 0) = Empty Then
MsgBox "該当フォルダがありません"
Exit Sub
Else
If MsgBox("該当フォルダがありました、フォルダを移動しますか", vbOKCancel) <> vbOK Then Exit Sub
End If
For i = 0 To UBound(arrMoveFolders, 2)
FSO.CopyFolder arrMoveFolders(0, i), strDestPath & "\" & arrMoveFolders(1, i)
Next
End Sub
以上となります。よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございました。
    教えて頂いたコードを設定いたしましたが、
    マクロを実行すると
    対象フォルダはありますが
    対象のフォルダが見つかりませんでした。
    と表示されてしまいます。
    解決方法を教えてください。
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/01/18 08:43
  • うーん・・・

    ご連絡ありがとうございます。
    記者の教えて頂いた、#3の
    移動のコードですが、
    ディスクトップ上に作成しましたフォルダ内にマクロブックを設定して実行すると上手く行きましたが、仮に「C:\Users\160931\Desktop\1月10日\テスト」
    ネットワーク上に
    仮に「\\nas-sp01\share\確認部\電子申請 関連\2.審査中」にマクロブックを設定すると
    該当フォルダがあります、メッセージが表示され、移動しますが、で「OK」をクリックすると
    少しマクロを実行しているタイムがありますが、対象フォルダは移動できませんでした。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/01/18 10:22
  • うーん・・・

    「FSO.CopyFolder」コードではネットワーク上にマクロ設定ブックを設定しても、上手くコピーができましたので、先ほど、新しく、不要フォルダの削除を質問させていただきました。
    一番は、ネットワーク上でも#3のように移動が出来れば最高なのですが、何か良い解決方法はありますでしょうか、
    よろしくお願いいたします。

      補足日時:2024/01/18 10:23
  • ご連絡ありがとうございます。
    教えて頂いたコードを変更して
    以下のコードを設定しました、
    Sub 行政回答確認フォルダコピー削除()
    Dim 元フォルダ As String
    元フォルダ = "C:\Users\160931\Desktop\1月10日\テスト\"
    Dim コピー先フォルダ As String
    コピー先フォルダ = ThisWorkbook.Path & "\コピー先フォルダ\"
    Dim 対象数字 As Variant
    対象数字 = Sheets("青紙表").Range("R18").Value
    Dim 対象フォルダ As String
    対象フォルダ = Dir(元フォルダ & "*" & 対象数字 & "*")
    If 対象フォルダ <> "" Then
    FileCopy 元フォルダ & 対象フォルダ, コピー先フォルダ & 対象フォルダ

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/01/18 10:52
  • Kill 元フォルダ & 対象フォルダ
    Else
    MsgBox "対象のフォルダが見つかりませんでした。"
    End If
    End Sub
    ですが、やはり"対象のフォルダが見つかりませんでした。"と表示されてしまします。
    R18には「12345678」と入力し
    検索フォルダ先「C:\Users\160931\Desktop\1月10日\テスト」にはフォルダ名「12345678」のフォルダがあります。解決方法を教えてください。よろしくお願いいたします。

    「マクロについて教えてください。 下記のマ」の補足画像5
      補足日時:2024/01/18 10:55
  • うーん・・・

    回答ありがとうございます。
    この度教えて頂いたマクロを設定したブックを
    \\nas-sp01\share\確認部\電子申請 関連\2.審査中\テスト
    内に置き、マクロを実行しましたが、
    やはり、同じく、該当フォルダが移動できませでした、
    ディスクトップ上のフォルダでは移動が可能です。
    やはり、システム上の関係かもしれません。
    下船させていただきます、とあり、とても残念ですが、
    以前、貴社に教えて頂きましたコードを元に
    https://oshiete.goo.ne.jp/qa/13711441.html
    に再、質問をさせて頂いております。
    下船の前にこの質問の回答をお願いできますでしょうか。
    よろしくお願いいたします。

    No.5の回答に寄せられた補足コメントです。 補足日時:2024/01/18 13:02

A 回答 (6件)

Sub マクロ実行()



' コピー元のフォルダパスを取得
Dim 元フォルダ As String
元フォルダ = "C:\元のフォルダ\"

' コピー先のフォルダパスを取得
Dim コピー先フォルダ As String
コピー先フォルダ = ThisWorkbook.Path & "\コピー先フォルダ\"

' マクロ有効ブックのシート「青紙表」のセル「R18」から値を取得
Dim 対象数字 As Variant
対象数字 = Sheets("青紙表").Range("R18").Value

' コピー元のフォルダ内の対象数字を含むフォルダを検索
Dim 対象フォルダ As String
対象フォルダ = Dir(元フォルダ & "*" & 対象数字 & "*")

' 対象フォルダが見つかった場合はコピーしてから削除
If 対象フォルダ <> "" Then
' フォルダをコピー
FileCopy 元フォルダ & 対象フォルダ, コピー先フォルダ & 対象フォルダ

' コピー後に元フォルダを削除(注意: これにより元フォルダは完全に削除されます)
Kill 元フォルダ & 対象フォルダ
Else
MsgBox "対象のフォルダが見つかりませんでした。"
End If

End Sub
この回答への補足あり
    • good
    • 1
この回答へのお礼

回答ありがとうございます
早速試してみます
後ほどご連絡差し上げます

お礼日時:2024/01/17 18:31

>やはり、同じく、該当フォルダが移動できませでした


残念です
テスト環境を作れないため こちらで検証していないコードですみません
>下船させていただきます

ご質問への回答ではありません
言葉足らずでした 病欠多発で非常コックを開けざる負えなく時間がありませんの意でした

https://oshiete.goo.ne.jp/qa/13711441.html
に再、質問をさせて頂いております。
今までのコードでアレンジできると思います

趣味替わりもあり興味もあまりないですしExcelVBAも日常で使う機会もないので暇のある時だけになると思います

余談です
常々思う事ですが 仕事で使われているようですので必然的に生産性があると思われます
このようなQAサイトで製作依頼めいたことをせずプロに委託するべきです
もっともご質問者様が開発を担当し給金をもらっているなら違う問題でしょか
    • good
    • 0
この回答へのお礼

今まで、大変お世話になり、ありがとうございました。
感謝いたします。
今後も何かあればよろしくお願いいたします。
又、私の質問の回答内容にて業務を行っているのは事実です。
しかし、業務を円滑に進めるための作業で、決して料金等は発生しておりません。
ありがとうございました。

お礼日時:2024/01/18 13:35

#2です


>ディスクトップ上に作成しましたフォルダ内にマクロブックを設定して実行すると上手く行きましたが、仮に「C:\Users\160931\Desktop\1月10日\テスト」
ネットワーク上に
仮に「\\nas-sp01\share\確認部\電子申請 関連\2.審査中」にマクロブックを設定すると
該当フォルダがあります、メッセージが表示され、移動しますが、で「OK」をクリックすると
少しマクロを実行しているタイムがありますが、対象フォルダは移動できませんでした。
単純に勘違いされています?
作業ブック
strDestPath = ThisWorkbook.Path
仮に「\\nas-sp01\share\確認部\電子申請 関連\2.審査中」

面倒なので 本ご質問のコードにpowershell移動コマンドを加えてみます
環境によるものなら出来ないかもですが テストしてみてください

Sub 行政回答フォルダ確認()
Dim i As Long
Dim FSO As Object
Dim strKeyword As String
Dim strFolderPath As String, strFolderName As String
Dim arrMoveFolders As Variant
Dim strOriginPath As String, strDestPath As String
If MsgBox("フォルダを検索しますか", vbOKCancel) <> vbOK Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
strKeyword = CStr(Sheets("青紙表").Range("R18").Value)
If strKeyword = "" Then MsgBox ("キーワードが空白です"): Exit Sub
strOriginPath = "\\nas-sp01\share\確認部\■01_敷地照会回答書"
strDestPath = ThisWorkbook.path
If Right(strDestPath, 1) = "\" Then strDestPath = Left(strDestPath, Len(strDestPath) - Len("\"))
ReDim arrMoveFolders(0 To 1, 0 To 0)
For i = 0 To 9
strFolderPath = strOriginPath & "\" & i
strFolderName = Dir(strFolderPath & "\*" & strKeyword & "*", vbDirectory)
Do Until strFolderName = ""
If Replace(strFolderName, ".", "") <> "" Then
If arrMoveFolders(0, 0) <> Empty Then ReDim Preserve arrMoveFolders(UBound(arrMoveFolders, 1), UBound(arrMoveFolders, 2) + 1)
arrMoveFolders(0, UBound(arrMoveFolders, 2)) = strFolderPath & "\" & strFolderName
arrMoveFolders(1, UBound(arrMoveFolders, 2)) = strFolderName
strFolderName = Dir
End If
Loop
Next
If arrMoveFolders(0, 0) = Empty Then
MsgBox "該当フォルダがありません"
Exit Sub
Else
If MsgBox("該当フォルダがありました、フォルダを移動しますか", vbOKCancel) <> vbOK Then Exit Sub
End If
Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
Dim psCmd As String
For i = 0 To UBound(arrMoveFolders, 2)
psCmd = "Move-Item " & arrMoveFolders(0, i) & " " & strDestPath & "\" & arrMoveFolders(1, i)
objWSH.Run "powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " & psCmd, 0, True
Next

End Sub

補----
Do Until strFolderName = ""については既に回答していますので割愛
知恵の
Sub Macro1()
Dim i As Long
Dim strKeyword As String
Dim strFolderPath As String, strFolderName As String
Dim arrMoveFolders As Variant


Private Function FolderPicker() As String
のご質問は削除されたのでしょうかね?

このあたりで下船させて頂きます
この回答への補足あり
    • good
    • 0

ネットワーク上のフォルダにアクセスする場合、いくつかの理由で移動できない可能性があります。

以下の点を確認してみてください:

1. **ネットワーク共有の権限**: マクロが実行されているユーザーアカウントに、ネットワーク上のフォルダへの読み取りおよび書き込みの権限があるか確認してください。

2. **ネットワークの接続**: マクロが実行される際にネットワークが正しく接続されていることを確認してください。ネットワーク接続が不安定な場合、フォルダへのアクセスが妨げられることがあります。

3. **ネットワークパスの指定**: ネットワーク上のフォルダを指定する際、正しい形式で指定されているか確認してください。UNCパス(例: `\\nas-sp01\share\確認部\電子申請 関連\2.審査中`)が正しく入力されているか確認しましょう。

4. **ネットワークの応答時間**: フォルダの移動が少し時間がかかる場合があるかもしれません。ネットワーク上での操作は、ローカルよりも時間がかかることがあります。そのため、実行に時間をかけてみてください。

これらの点を確認した上で、問題が解決しない場合は、デバッグメッセージを追加して詳細な情報を取得するか、エラーが発生するか確認することが役立つでしょう。
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
確認してみます。

お礼日時:2024/01/18 12:17

解決するために以下の点を確認してみてください:



1. **セル「R18」の値の確認**: マクロ有効ブックのシート「青紙表」のセル「R18」に表示されている数字が正しいか確認してください。もしもセルが空白であるか、正しい数字が入力されていない場合、対象フォルダが見つからないエラーが発生します。

2. **元フォルダのパスの確認**: `元フォルダ` の指定が正しいことを確認してください。もしもフォルダが存在しないか、誤ったパスが指定されている場合も、対象フォルダが見つからないエラーが発生します。

3. **デバッグメッセージの追加**: デバッグメッセージを追加して、どの段階でエラーが発生しているか確認することができます。例えば、以下のようなコードを挿入してみてください:

```vba
MsgBox "元フォルダ: " & 元フォルダ & vbCrLf & "対象数字: " & 対象数字 & vbCrLf & "対象フォルダ: " & 対象フォルダ
```

これにより、どの変数がどのような値を持っているかがメッセージボックスで表示されます。エラーの原因を見つけやすくなるかもしれません。

これらの手順を試しても問題が解決しない場合、もう一度教えていただければと思います。
この回答への補足あり
    • good
    • 0

>>作業フォルダにコピーされます。


コピー後は「\\nas-sp01\share\確認部\■01_敷地照会回答書\8」内にあるコピー元の「ERI12345678(回答)テスト」が不要になりますので、削除したい

コピーして削除=移動 ではありませんか?
FSO.CopyFolderは
https://oshiete.goo.ne.jp/qa/13708768.html
のご質問でnasの制限で出来ない作業の代替えで示したものと記憶しています

#3に示したもので移動が出来ないのでしょうか?
この回答への補足あり
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A