• 締切済み

フォルダ内の特定ブックだけを1つのブックにまとめる

以前こちらで質問させて頂きましたフォルダ内の特定ブックだけを1にのブックにまとめる方法で、大変助かっていましたがブック名が変更になり、教えて頂いたマクロでは実行できなくなったので自分なりに考えたのですがどうしてもできません。 質問時のブック名は「1_****」と「2_****」で 今回「1_****」だけが「1(3)_****」に変更になりました。 下記のマクロでmyfile = dir(mypath & "1_" & "*.xl*")→myfile = dir(mypath & "1(3)_" & "*.xl*")に変更するのはわかるのですが do until myfile = ""   myfile2 = "2" & mid(myfile,2,99)をどう変更すれば良いかわかりません どなたかお助け頂けませんか? sub macro1()  dim myPath as string  dim myFile as string  dim myFile2 as string  mypath = "c:\test\"  myfile = dir(mypath & "1_" & "*.xl*")  do until myfile = ""   myfile2 = "2" & mid(myfile,2,99)   workbooks.open mypath & myfile   workbooks.open mypath & myfile2   application.displayalerts = false   workbooks(myfile).worksheets("2").delete   application.displayalerts = true   workbooks(myfile2).worksheets("2").move after:=workbooks(myfile).worksheets("1")   workbooks(myfile).close true   workbooks(myfile2).close false   myfile = dir()  loop end sub

みんなの回答

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

もう面倒くさいので、元のコードのままで作って あとでエクスプローラーでファイル名を「1_****」から「1(3)_****」に変更したら早いのでは? 他さまへのレスに失礼ですが、なんとなく気になったので。 > mid(myfile,5,99)に変更するとの事ですが2と5にはどのような意味があるのですか?またその次の99の意味も教えて頂けませんか? Mid関数の使い方です。 自分で調べたらすぐわかりますよ。 覚える気があるなら、こういうのは自分で調べるべきでしょうね。

すると、全ての回答が全文表示されます。
回答No.3

そのパスのキーらしい、"_"が1つしかないとすると、プリフィックス変更の影響を最小限にするには、 "_"以降の共通ファイル名パートを、Splitで取り出すのが賢明では?? Option Explicit Sub macro1() Dim myPath As String Dim myFile As String Dim myFile2 As String Dim myFileX As Variant On Error Resume Next Application.DisplayAlerts = True myPath = "c:\test\" myFile = Dir(myPath & "1(3)_" & "*.xl*") Do Until myFile = "" ' myFile2 = "2" & Mid(myFile, 2, 99) myFileX = Split(myFile, "_") myFile2 = "2_" & myFileX(1) Workbooks.Open myPath & myFile Workbooks.Open myPath & myFile2 Application.DisplayAlerts = False Workbooks(myFile).Worksheets("2").Delete Application.DisplayAlerts = True Workbooks(myFile2).Worksheets("2").Move after:=Workbooks(myFile).Worksheets("1") Workbooks(myFile).Close True Workbooks(myFile2).Close False myFile = Dir() Loop Application.DisplayAlerts = False End Sub

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

とりあえず >myfile2 = "2" & mid(myfile,2,99)をどう変更すれば良いかわかりません myfile2 = "2" & mid(myfile,5,99) とします。 でも >フォルダ内の特定ブックだけを1にのブックにまとめる そんな内容じゃなかったと思いましたが。 でもまぁ、動けばナンでもいいです。 #余談 「動かないマクロ」のご相談は、「教わったの」を回答から手抜きして丸コピーしても、何の情報提供にもなりません。 あなたが実際に「今動かしているマクロ」を、あなたのエクセルから改めてコピーして、情報提供してください。

AY1322DMW
質問者

補足

3連休なので会社が休みでまだ試していませんがまずはありがとうございます。 myfile2 = "2" & mid(myfile,2,99)をmyfile2 = "2" & mid(myfile,5,99)に変更するとの事ですが2と5にはどのような意味があるのですか?またその次の99の意味も教えて頂けませんか?

すると、全ての回答が全文表示されます。
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

> 質問時のブック名は「1_****」とで > 今回「1_****」だけが「1(3)_****」に変更になりました。 のであれば、 > 下記のマクロでmyfile = dir(mypath & "1_" & "*.xl*")→myfile = dir(mypath & "1(3)_" & "*.xl*")に変更する だけで良いのではないでしょうか? 「2_****」= myfile2 => 転記元とするブック 「1(3)_****」= myfile =>転記先とするブック と読めるんですが、違いますか?

AY1322DMW
質問者

補足

myfile = dir(mypath & "1_" & "*.xl*")→myfile = dir(mypath & "1(3)_" & "*.xl*")に変更するだけではダメでした。 myfile2 = "2" & mid(myfile,2,99)の部分が「2_****」ではなく「2(3)_****」として検索?されブックが無いと判断され・・・

すると、全ての回答が全文表示されます。

関連するQ&A