マクロについて教えてください。
下記のマクロは以前教えて頂いたマクロです。
マクロを実行すると 指定セル値シート名「青紙表」のセル値「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ベストアンサー
- 回答日時:
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
No.6
- 回答日時:
>やはり、同じく、該当フォルダが移動できませでした
残念です
テスト環境を作れないため こちらで検証していないコードですみません
>下船させていただきます
ご質問への回答ではありません
言葉足らずでした 病欠多発で非常コックを開けざる負えなく時間がありませんの意でした
>https://oshiete.goo.ne.jp/qa/13711441.html
に再、質問をさせて頂いております。
今までのコードでアレンジできると思います
趣味替わりもあり興味もあまりないですしExcelVBAも日常で使う機会もないので暇のある時だけになると思います
余談です
常々思う事ですが 仕事で使われているようですので必然的に生産性があると思われます
このようなQAサイトで製作依頼めいたことをせずプロに委託するべきです
もっともご質問者様が開発を担当し給金をもらっているなら違う問題でしょか
今まで、大変お世話になり、ありがとうございました。
感謝いたします。
今後も何かあればよろしくお願いいたします。
又、私の質問の回答内容にて業務を行っているのは事実です。
しかし、業務を円滑に進めるための作業で、決して料金等は発生しておりません。
ありがとうございました。
No.5
- 回答日時:
#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
のご質問は削除されたのでしょうかね?
このあたりで下船させて頂きます
No.4
- 回答日時:
ネットワーク上のフォルダにアクセスする場合、いくつかの理由で移動できない可能性があります。
以下の点を確認してみてください:1. **ネットワーク共有の権限**: マクロが実行されているユーザーアカウントに、ネットワーク上のフォルダへの読み取りおよび書き込みの権限があるか確認してください。
2. **ネットワークの接続**: マクロが実行される際にネットワークが正しく接続されていることを確認してください。ネットワーク接続が不安定な場合、フォルダへのアクセスが妨げられることがあります。
3. **ネットワークパスの指定**: ネットワーク上のフォルダを指定する際、正しい形式で指定されているか確認してください。UNCパス(例: `\\nas-sp01\share\確認部\電子申請 関連\2.審査中`)が正しく入力されているか確認しましょう。
4. **ネットワークの応答時間**: フォルダの移動が少し時間がかかる場合があるかもしれません。ネットワーク上での操作は、ローカルよりも時間がかかることがあります。そのため、実行に時間をかけてみてください。
これらの点を確認した上で、問題が解決しない場合は、デバッグメッセージを追加して詳細な情報を取得するか、エラーが発生するか確認することが役立つでしょう。
No.3
- 回答日時:
解決するために以下の点を確認してみてください:
1. **セル「R18」の値の確認**: マクロ有効ブックのシート「青紙表」のセル「R18」に表示されている数字が正しいか確認してください。もしもセルが空白であるか、正しい数字が入力されていない場合、対象フォルダが見つからないエラーが発生します。
2. **元フォルダのパスの確認**: `元フォルダ` の指定が正しいことを確認してください。もしもフォルダが存在しないか、誤ったパスが指定されている場合も、対象フォルダが見つからないエラーが発生します。
3. **デバッグメッセージの追加**: デバッグメッセージを追加して、どの段階でエラーが発生しているか確認することができます。例えば、以下のようなコードを挿入してみてください:
```vba
MsgBox "元フォルダ: " & 元フォルダ & vbCrLf & "対象数字: " & 対象数字 & vbCrLf & "対象フォルダ: " & 対象フォルダ
```
これにより、どの変数がどのような値を持っているかがメッセージボックスで表示されます。エラーの原因を見つけやすくなるかもしれません。
これらの手順を試しても問題が解決しない場合、もう一度教えていただければと思います。
No.2
- 回答日時:
>>作業フォルダにコピーされます。
コピー後は「\\nas-sp01\share\確認部\■01_敷地照会回答書\8」内にあるコピー元の「ERI12345678(回答)テスト」が不要になりますので、削除したい
コピーして削除=移動 ではありませんか?
FSO.CopyFolderは
https://oshiete.goo.ne.jp/qa/13708768.html
のご質問でnasの制限で出来ない作業の代替えで示したものと記憶しています
#3に示したもので移動が出来ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2024/01/15 10:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/01/12 16:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/11/09 11:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/11/08 10:31
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/10/19 17:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/10/19 09:27
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
エクセルVBAでデータ転記
Visual Basic(VBA)
-
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
-
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
-
4
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
5
Cellsのコードが打てません
Visual Basic(VBA)
-
6
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
7
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
8
VBA
Visual Basic(VBA)
-
9
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
10
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
11
VBA UserFormからの転記で
Visual Basic(VBA)
-
12
【VBA】エクセルで値のみクリップボードにコピーするコードについて(貼り付け時の空白削除)
Visual Basic(VBA)
-
13
select case について
Visual Basic(VBA)
-
14
マクロVBAについてご教授いただけましたらと存じます。
Visual Basic(VBA)
-
15
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
16
Excel マクロについて
Visual Basic(VBA)
-
17
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
18
【マクロ】転記ツール。転記先にデータがある場合、上書きするか消すか質問をして欲しい
Excel(エクセル)
-
19
データから単位文字を除去して計算する方法は?
Excel(エクセル)
-
20
エクセルのマクロのコードについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名と同名のフォルダを...
-
Windows10でコマンドプロンプト...
-
Access VBA で フォルダ権限...
-
【マクロ】フォルダにファイル...
-
エクセルマクロで指定フォルダ...
-
エクセル VBA Filename:=Left(T...
-
平日出力されるログを月次処理...
-
Javaでフォルダ複数階層のZipフ...
-
デスクトップの画像をhtmlに表...
-
バッチファイルで指定フォルダ...
-
VBA 最新のフォルダ取得
-
ツリービューを使って、エクス...
-
ファイルサイズを指定してファ...
-
VBA フォルダ名と画像ファイル...
-
あるフォルダの中にあるファイ...
-
パス名に2バイト文字(マルチバ...
-
Excelで指定したフォルダに保存...
-
エクセル VBA ファイルをフォ...
-
会社のネットワーク上のファイ...
-
カレントフォルダって?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報
回答ありがとうございました。
教えて頂いたコードを設定いたしましたが、
マクロを実行すると
対象フォルダはありますが
対象のフォルダが見つかりませんでした。
と表示されてしまいます。
解決方法を教えてください。
よろしくお願いいたします。
ご連絡ありがとうございます。
記者の教えて頂いた、#3の
移動のコードですが、
ディスクトップ上に作成しましたフォルダ内にマクロブックを設定して実行すると上手く行きましたが、仮に「C:\Users\160931\Desktop\1月10日\テスト」
ネットワーク上に
仮に「\\nas-sp01\share\確認部\電子申請 関連\2.審査中」にマクロブックを設定すると
該当フォルダがあります、メッセージが表示され、移動しますが、で「OK」をクリックすると
少しマクロを実行しているタイムがありますが、対象フォルダは移動できませんでした。
「FSO.CopyFolder」コードではネットワーク上にマクロ設定ブックを設定しても、上手くコピーができましたので、先ほど、新しく、不要フォルダの削除を質問させていただきました。
一番は、ネットワーク上でも#3のように移動が出来れば最高なのですが、何か良い解決方法はありますでしょうか、
よろしくお願いいたします。
ご連絡ありがとうございます。
教えて頂いたコードを変更して
以下のコードを設定しました、
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 元フォルダ & 対象フォルダ, コピー先フォルダ & 対象フォルダ
Kill 元フォルダ & 対象フォルダ
Else
MsgBox "対象のフォルダが見つかりませんでした。"
End If
End Sub
ですが、やはり"対象のフォルダが見つかりませんでした。"と表示されてしまします。
R18には「12345678」と入力し
検索フォルダ先「C:\Users\160931\Desktop\1月10日\テスト」にはフォルダ名「12345678」のフォルダがあります。解決方法を教えてください。よろしくお願いいたします。
回答ありがとうございます。
この度教えて頂いたマクロを設定したブックを
\\nas-sp01\share\確認部\電子申請 関連\2.審査中\テスト
内に置き、マクロを実行しましたが、
やはり、同じく、該当フォルダが移動できませでした、
ディスクトップ上のフォルダでは移動が可能です。
やはり、システム上の関係かもしれません。
下船させていただきます、とあり、とても残念ですが、
以前、貴社に教えて頂きましたコードを元に
https://oshiete.goo.ne.jp/qa/13711441.html
に再、質問をさせて頂いております。
下船の前にこの質問の回答をお願いできますでしょうか。
よろしくお願いいたします。