• ベストアンサー

Excel vbaファイル指定先に保存されない

マクロをかけたエクセルファイルを、特定の名前を指定(年月を足す)して 「修正後」フォルダを作り、そこへ保存させたいのですが ファイル名の変数設定に「修正後」を入れてもだめなのでしょうか? ****** Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Application.ScreenUpdating = False 'Cドライブに修正後というフォルダを作成します。 MkDir "C:\Users\XXXXXX\Desktop\NEM_macro\修正後" 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\XXXXXX\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange Cells.Font.Name = "MS Pゴシック" Cells.Font.Name = "Arial" Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = ActiveWorkbook.Path & 修正後 & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 Next myFile = Dir() Loop End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.5

あとフォルダの存在を確認して、なければ作成することにしないとエラーになると思います。 VBAでフォルダ存在チェック https://vbabeginner.net/folder-existence-check/

joezen05
質問者

お礼

ありがとうございます。確かに自分でフォルダ作るくらいなら簡単でよいのでは、という思いもあります。テストしながらフォルダ存在のチェックの必要性も感じました。とても助かりました!

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

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.4

No.1の追加です ActiveWorkbook.Path & "\" & "修正後" ではなくて以下のようにフォルダ指定したほうがよくないですか "C:\Users\XXXXXX\Desktop\NEM_macro\修正後" & "\" & ThisName & 年月 & ".xlsx" もしくは Dim 保存先 As String 保存先 = "C:\Users\XXXXXX\Desktop\NEM_macro\修正後" MkDir 保存先 中略 NewName = 保存先 & "\" & ThisName & 年月 & ".xlsx" とかにしておくとかいかがですか。

全文を見る
すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率52% (1761/3379)
回答No.3

No2です、申し訳ない。ちゃんとコード読んでませんでした。忘れて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率52% (1761/3379)
回答No.2

>>「修正後」フォルダを作り、そこへ保存させたい  もし開始時にフォルダが存在してないなら、フォルダを作成する必要があります。 https://uxmilk.jp/61379  まあ単発なら手動で作っておいた方が楽ですけどね。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.1

"\"が不足しているのと「修正後」が変数扱いされますので NewName = ActiveWorkbook.Path & "\" & "修正後" & "\" & ThisName & 年月 & ".xlsx" にしてみてください。

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

関連するQ&A

  • Excelvba_Loopが望まぬところにかかる2

    ループは指定したパスのフォルダのファイルにかけているつもりなのですが マクロ処理は,、最初に↑から拾った1つ目のファイルがCドライブに保存され そのファイルに対してマクロ処理のループがかかり Cドライブに1つ目の保存ファイルが増えていく一方な現象。 どう解決したらよいでしょうか? ******* Sub NEM_Macroループ ( ) ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Application.ScreenUpdating = False 'Cドライブに修正後というフォルダを作成します。 MkDir "C:\Users\XXXXXX\Desktop\NEM_macro\修正後" 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "\\Jp\Work\NEM" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange ***処理マクロ(フォント変更など)*** Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = "C:\Users\XXXXXX\Desktop\NEM_macro\"修正後" & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 Next myFile = Dir() Loop End Sub

  • EXCELマクロ、ループかけるとマクロが固まる

    「フォルダ内の全てのExcelファイルに対してループを実行する」マクロを組むと、カーソルがぐるぐるして正常に起動していないように思えます。ループ無しであればさくさく動きます。ループ無しの場合は、ファイル1つ1つを自分で開けてマクロを起動。マクロは下記の通り。初心者です。 Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Dim cell Application.ScreenUpdating = False 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\N000000\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange For Each cell In myRange Cells.Select With Selection.Font .Name = "MS Pゴシック" .Name = "Arial" End With Selection.Replace What:="、", Replacement:="," Selection.Replace What:="※", Replacement:="*" Selection.Replace What:="①", Replacement:="(1)" Selection.Replace What:="②", Replacement:="(2)" Selection.Replace What:="③", Replacement:="(3)" Selection.Replace What:="④", Replacement:="(4)" Selection.Replace What:="⑤", Replacement:="(5)" Selection.Replace What:="⑥", Replacement:="(6)" Selection.Replace What:="⑦", Replacement:="(7)" Selection.Replace What:="⑧", Replacement:="(8)" Selection.Replace What:="⑨", Replacement:="(9)" Selection.Replace What:="⑩", Replacement:="(10)" '半角全角修正 Dim セル As Range Dim 変換文字 As String Dim 半角 As String Dim i As Long ActiveSheet.UsedRange.Select For Each セル In Selection 変換文字 = StrConv(セル.Text, vbWide) For i = 1 To Len(変換文字) 半角 = StrConv(Mid(変換文字, i, 1), vbNarrow) If Asc(半角) >= 32 And Asc(半角) <= 126 Then _ 変換文字 = WorksheetFunction.Replace(変換文字, i, 1, 半角) Next i セル = 変換文字 Next 'テキストボックスグループ化解除 Dim mySPg As Shape For Each mySPg In ActiveSheet.Shapes If mySPg.Type = msoGroup Then mySPg.Ungroup End If Next mySPg Dim mySP As Shape 'すべての図形テキストボックスをループ For Each mySP In ActiveSheet.Shapes 'テキストボックスの場合 If mySP.Type = msoTextBox Then 'フォント変更 mySP.TextFrame2.TextRange.Font.NameFarEast = "MS Pゴシック" mySP.TextFrame2.TextRange.Font.NameFarEast = "Arial" End If Next mySP Next Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = ActiveWorkbook.Path & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 myFile = Dir() Next Loop End Sub

  • Excelマクロループセル/シートにループ

    いつもお世話になります。 ずっと同じマクロについて質問しております。 アドバイスいただいた通りにしたつもりですが、現在セルとシートにループがかかっていないようで マクロをかけたファイルを見ても、変更がファイルの最後のページにしか反映されていないです。 お手数ですが改めて下記マクロをどのように修正すべきか教えてください。 Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Application.ScreenUpdating = False 'インジケーター表示 Dim j As Long Info.Show vbModeless 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\NXXXXX\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" 'インジケーター For j = 1 To 30000 With Info .ProgressBar1.Value = j .パーセント.Caption = Int(j / 30000 * 100) & "%" .Repaint End With Next j '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange Cells.Font.Name = "MS Pゴシック" Cells.Font.Name = "Arial" Selection.Replace What:="、", Replacement:="," Selection.Replace What:="※", Replacement:="*" Selection.Replace What:="①", Replacement:="(1)" Selection.Replace What:="②", Replacement:="(2)" Selection.Replace What:="③", Replacement:="(3)" Selection.Replace What:="④", Replacement:="(4)" Selection.Replace What:="⑤", Replacement:="(5)" Selection.Replace What:="⑥", Replacement:="(6)" Selection.Replace What:="⑦", Replacement:="(7)" Selection.Replace What:="⑧", Replacement:="(8)" Selection.Replace What:="⑨", Replacement:="(9)" Selection.Replace What:="⑩", Replacement:="(10)" '半角全角修正 Dim セル As Range Dim 変換文字 As String Dim 半角 As String Dim i As Long Range("A1").CurrentRegion.Select For Each セル In Selection 変換文字 = StrConv(セル.Text, vbWide) For i = 1 To Len(変換文字) 半角 = StrConv(Mid(変換文字, i, 1), vbNarrow) If Asc(半角) >= 32 And Asc(半角) <= 126 Then _ 変換文字 = WorksheetFunction.Replace(変換文字, i, 1, 半角) Next i セル = 変換文字 Next 'テキストボックスグループ化解除 Dim mySPg As Shape For Each mySPg In ActiveSheet.Shapes If mySPg.Type = msoGroup Then mySPg.Ungroup End If Next mySPg Dim mySP As Shape 'すべての図形テキストボックスをループ For Each mySP In ActiveSheet.Shapes 'テキストボックスの場合 If mySP.Type = msoTextBox Then 'フォント変更 mySP.TextFrame2.TextRange.Font.NameFarEast = "MS Pゴシック" mySP.TextFrame2.TextRange.Font.NameFarEast = "Arial" End If Next mySP Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = "C:\Users\NXXXXX\Desktop\NEM_macro\修正後" & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName ActiveWorkbook.Close Next '次のファイルに移動します。 myFile = Dir() Loop Info.Hide MsgBox "処理が終了しました。" Unload Info End Sub

  • Excelマクロ、Loopが望まぬところにかかる

    いつもお世話になってます。マクロ初心者です。 下記マクロもコピペで作りました。先日あまりに時間がかかるので相談したら 回答いただいたのですが、別の問題が出てきました。 フォルダ内のすべてのファイルに実施するLoopが、 フォント変更などのマクロを実施して保存されたファイルに、もう一度マクロがかかる仕組みになっています。 故にマクロをスタートさせると、ファイル名がどんどん長いファイルが増えていって 作業が永遠に終わりません。 既述の通り、マクロのつぎはぎで作成したので どこがどう問題なのか突き詰めることができません。 分かる方がいればご教示いただけますと幸いです。 ****** Sub NEM_Macroループ() ' ' フォント変更、記号変換、テキストボックス、全シート ' Dim myFile As String Dim myPath As String Dim myBook As Workbook Dim mySheet As Worksheet Dim myRange As Range Application.ScreenUpdating = False 'インジケーター表示 Dim j As Long Info.Show vbModeless 'フォントを変更するファイルが保存されているフォルダのパスを指定します。 myPath = "C:\Users\XXXXX\Desktop\NEM_macro" '指定したフォルダ内の全てのExcelファイルに対してループを実行します。 myFile = Dir(myPath & "\*.xlsx") Do While myFile <> "" 'インジケーター For j = 1 To 30000 With Info .ProgressBar1.Value = j .パーセント.Caption = Int(j / 30000 * 100) & "%" .Repaint End With Next j '各ファイルを開きます。 Set myBook = Workbooks.Open(myPath & "\" & myFile) '全てのワークシートに対してループを実行します。 For Each mySheet In myBook.Sheets 'シート内の全てのセルに対してループを実行します。 Set myRange = mySheet.UsedRange Cells.Font.Name = "MS Pゴシック" Cells.Font.Name = "Arial" Selection.Replace What:="、", Replacement:="," Selection.Replace What:="※", Replacement:="*" Selection.Replace What:="①", Replacement:="(1)" Selection.Replace What:="②", Replacement:="(2)" Selection.Replace What:="③", Replacement:="(3)" Selection.Replace What:="④", Replacement:="(4)" Selection.Replace What:="⑤", Replacement:="(5)" Selection.Replace What:="⑥", Replacement:="(6)" Selection.Replace What:="⑦", Replacement:="(7)" Selection.Replace What:="⑧", Replacement:="(8)" Selection.Replace What:="⑨", Replacement:="(9)" Selection.Replace What:="⑩", Replacement:="(10)" '半角全角修正 Dim セル As Range Dim 変換文字 As String Dim 半角 As String Dim i As Long Range("A1").CurrentRegion.Select For Each セル In Selection 変換文字 = StrConv(セル.Text, vbWide) For i = 1 To Len(変換文字) 半角 = StrConv(Mid(変換文字, i, 1), vbNarrow) If Asc(半角) >= 32 And Asc(半角) <= 126 Then _ 変換文字 = WorksheetFunction.Replace(変換文字, i, 1, 半角) Next i セル = 変換文字 Next 'テキストボックスグループ化解除 Dim mySPg As Shape For Each mySPg In ActiveSheet.Shapes If mySPg.Type = msoGroup Then mySPg.Ungroup End If Next mySPg Dim mySP As Shape 'すべての図形テキストボックスをループ For Each mySP In ActiveSheet.Shapes 'テキストボックスの場合 If mySP.Type = msoTextBox Then 'フォント変更 mySP.TextFrame2.TextRange.Font.NameFarEast = "MS Pゴシック" mySP.TextFrame2.TextRange.Font.NameFarEast = "Arial" End If Next mySP Dim 年月 Dim ThisName, NewName Dim MojiCoA As Integer, MojiCoB As Integer 'Format,Year,Month関数を利用します 年月 = Year(Date) & "_" & Month(Date) '拡張子なしのファイル名を取得します MojiCoA = InStrRev(ActiveWorkbook.Name, ".") ThisName = Left(ActiveWorkbook.Name, MojiCoA - 1) 'ファイル名を変数へ設定します NewName = ActiveWorkbook.Path & "\" & ThisName & 年月 & ".xlsx" '作成したWorkbookを名前を付けて、移動先フォルダに保存します ActiveWorkbook.SaveAs Filename:=NewName '次のファイルに移動します。 Next myFile = Dir() Loop Info.Hide MsgBox "処理が終了しました。" Unload Info End Sub

  • Excel 2010 VBA:ファイル名を読み込む

    下は複数のcsvファイルを一つに合体するVBAです。これにシートの右端に読み取ったファイル名を追加するにはどうしたらよいでしょうか。 よろしくお願いします。 Sub macro1() Dim myPath As String Dim myFile As String Dim s As String myPath = ThisWorkbook.Path & "\" On Error Resume Next Kill myPath & "合体版.csv" On Error GoTo 0 myFile = Dir(myPath & "*.csv") If myFile = "" Then Exit Sub Open myPath & "合体版.csv" For Output As #1 Do Until myFile = "" Open myPath & myFile For Input As #2 Do Until EOF(2) Line Input #2, s Print #1, s Loop Close #2 myFile = Dir() Loop Close #1 End Sub

  • Excelのマクロで同じ処理を実行

    Excelのマクロについてです。 この度、フォルダ内にあるデータから傾きを抽出して、 データシートにまとめる作業を求められています。 一度ずつ開いて行うのが大変なので、マクロを用いようと思っています。 Sub マクロループ() Dim myPath As String Dim myFile As String myPath = "C:\test\" myFile = Dir(myPath & "*.CSV*") Do Until myFile = "" Workbooks.Open myPath & myFile ( ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 3 ~ ~ ActiveSheet.Shapes("グラフ 1").IncrementLeft -125.25 ActiveSheet.Shapes("グラフ 1").IncrementTop 21.75 Application.CommandBars("Format Object").Visible = False ) ActiveWorkbook.Close True myFile = Dir() Loop End Sub ~の部分に省略した処理が入ります。 これでエラーなどは起きないのですが、開いて閉じるだけになってしまっています。 ()で括られた部分だけで実行すると、そのファイルで傾きを表示してくれます。 これを全ファイルでやりたいのですが、お力添えをお願いします。 また、それぞれで得られた傾きをデータシートに自動で入力することなどができればそれも教えていただければ幸いです。 どうかよろしくお願いします。

  • ExcelでのA1セルで名前と場所指定したい

    こんにちは、 エクセル2010 でマクロを色々勉強しながらやっているのですが、うまく行かず皆さん助けていただければと思います。 [概要] 1.Sheel1のA1セルをファイル名に。 2.保存場所を指定したフォルダ(会社サーバー内フォルダ) に保存したい こういうマクロを以下のように作ってみたのですが、名前を付けて保存するダイアログがしか表示されなく上手く行きません。 ご教授頂けたらと思います。 Sub TestFileSaveAs() '指定フォルダを置く Const MYPATH = "\\192.000.000.00\所属部\固定フォルダ\" Dim myData As String Dim myFile As String 'A1 にあるデータをファイル名にする If Range("A1").Value <> "" Then myData = Range("A1").Value End If On Error Resume Next Do Err.Clear myFile = Application.GetSaveAsFilename(MYPATH & myData, "EXCELファイル (*.xls), *.xls") If StrComp(myFile, "False") = 0 Then Exit Sub ActiveWorkbook.SaveAs myFile Loop While Err.Number > 0 End Sub

  • VBAでのフォルダ指定方法について

    EXCELファイルが保存されているディレクトリ配下のフォルダーを指定できるようにしたくていろいろ試してみたのですが、うまくいきません。 どなたか、お知恵をお貸しください。 以下ソースです。 Private Sub CommandButton1_Click() Dim ShellApp As Object Dim oFolder As Object Dim MyPath As String MyPath = ActiveWorkbook.Path Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "処理ファイルの格納フォルダ選択", 1, MyPath) If Not oFolder Is Nothing Then TextBox1.Value = oFolder.Items.Item.Path End If Set ShellApp = Nothing Set oFolder = Nothing End Sub

  • エクセルVBAでConsolidate

    以下は、ネット検索で見つけたサンプルコードです。 同じフォルダ内の全ブックのSheet1のA1:B10をThisWorkbookのSheet1に統合しています。 Sub test2() Dim MyFile As String, MyPath As String Dim SumFile() As Variant, i As Long MyPath = ThisWorkbook.Path & "\" MyFile = Dir(MyPath, vbNormal) Do Until MyFile = "" If MyFile <> ThisWorkbook.Name Then ReDim Preserve SumFile(i) 'A1からB10の値を変数に代入 SumFile(i) = "'" & MyPath & "[" & MyFile & "]Sheet1'!R1C1:R10C2" i = i + 1 End If MyFile = Dir Loop If i = 0 Then MsgBox "データが有りません": Exit Sub Worksheets("Sheet1").Range("A1").Consolidate Sources:=SumFile() End Sub 質問1 Sheet1だけでなく全シートのA1:B10をThisWorkbookのSheet1に統合するためにはどう書き換えればよいのでしょうか? 質問2 上記コードではなぜ、ブックを開かずにデータがとれるのでしょうか?

  • VBA 探しているFileがないときの処理方法

    現在、下記のようにしてマクロ実行ブックと同じ階層のフォルダ名を取得してAに、フォルダ内のabc.XLSのC9の値をBに、abc.XLSの更新日時をCに表示させています。 このとき、フォルダ内にabc.XLSが無い場合にファイル名をAに書き出してB及びCは空白というように表示したいのですが、どのようにすればよろしいでしょうか。 macro1は以前質問させて頂いたものがベースになっています。ExecuteExcel4Macroを使っている関係でファイル名が無いときの処理はDirを使ってできるとmougで調べてわかりましたが、自分の知識ではできず、macro2を作成したのですが、指定ファイルがない場合の処理がうまくできずにいます。 macro1はファイルオープンの窓が開きます。macro2はファイルが存在しないという窓が開きます。 どちらの場合でもかまいませんのでお力をお貸し頂けませんでしょうか。 Sub macro1() Dim myPath As String Dim myFolder As String Dim r As Long r = 3 myPath = ThisWorkbook.Path & "\" myFolder = Dir(myPath, vbDirectory) myBook = "abc.XLS" Application.ScreenUpdating = False Range("A3:C60").Clear Do Until myFolder = "" If myFolder <> "." And myFolder <> ".." Then If (GetAttr(myPath & myFolder) And vbDirectory) = vbDirectory Then Cells(r, 1) = myFolder Cells(r, 2).Value = ExecuteExcel4Macro("'" & myPath & myFolder & "\[" & myBook & "]Sheet1 '!R9C3") On Error Resume Next Cells(r, 3) = FileDateTime(myPath & myFolder & "\" & myBook) On Error GoTo 0 If Cells(r, 3) = "" Then Cells(r, 2) = "myBook" End If Cells(r, 2).NumberFormatLocal = "#,##0_ " Cells(r, 3).NumberFormatLocal = "y""年""m""月""" With Range("A3:C60") .Sort Key1:=Range("C3"), Order1:=xlAscending .Borders.LineStyle = True End With r = r + 1 End If End If myFolder = Dir() Loop Application.ScreenUpdating = True End Sub Sub Macro2() Dim myPath As String Dim myFolder As String Dim myBook As String myPath = ThisWorkbook.Path & "\" myFolder = Dir(myPath, vbDirectory) myBook = "abc.XLS" i = 2 Do Until myFolder = "" If myFolder <> "." And myFolder <> ".." Then If (GetAttr(myPath & myFolder) And vbDirectory) = vbDirectory Then Workbooks.Open (myPath & myFolder & "\" & myBook) Range("C9").Activate Selection.Copy ThisWorkbook.Activate Cells(i, 1) = myFolder Cells(i, 2).PasteSpecial xlValues Cells(i, 3) = FileDateTime(myPath & myFolder & "\" & myBook) Workbooks(myBook).Close SaveChanges:=False i = i + 1 End If End If myFolder = Dir() Loop End Sub

専門家に質問してみよう