ここから本文です

マクロで指定ディレクトリ下にあるフォルダ内のエクセルデータを1つのシートにま...

アバター

ID非公開さん

2015/12/2517:49:23

マクロで指定ディレクトリ下にあるフォルダ内のエクセルデータを1つのシートにまとめたく

https://rakuzanet.jp/excel-book-sheet-combine.html

上記のデータを改良しフルパスが必要なところを相対パスにしたく試行錯誤しておりますが、
コンパイルエラーでつまずてしまっております。

----------------------------------------------------

'2015/09/18 ver1.1
Sub ExcelbookCombine()
'結合したいファイルがあるフォルダの場所 cドライブなら "C:\test\"
Const Fol As String = ThisWorkbook.Path & "\test\"
Dim Fn
Dim NewFile As Workbook
Dim Wb As Workbook
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim R As Range
Set NewFile = Workbooks.Add
Set Ws1 = NewFile.Worksheets(1)
Set R = Ws1.Range("A1")
Fn = Dir(Fol, vbNormal)
Do Until Fn = ""
Set Wb = Workbooks.Open(Fol & Fn)
'ワークシート1をコピーする場合は Wb.Worksheets(1)
'ワークシート2をコピーする場合は Wb.Worksheets(2)
Set Ws2 = Wb.Worksheets(1)
'Aの1行目から8列目までをコピーして結合する
Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R
Set R = R.End(xlDown).Offset(1)
Wb.Close
'Debug.Print Fn
Fn = Dir
Loop
Set R = Nothing
Set Ws1 = Nothing: Set Ws2 = Nothing
Set Wb = Nothing: Set NewFile = Nothing
End Sub

----------------------------------------------------

と上記のとおり
Const Fol As String = ThisWorkbook.Path & "\test\"
の記述が間違っているのはわかるのですが、
相対パスを指示した後そのあとの「test」フォルダを指示するにはどうすればよろしいでしょうか。
どなたかご教示いただければ大変助かります。

環境はExcel 2013およびExcel 2011 for mac になります。

よろしくお願いします。

閲覧数:
256
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

kky********さん

2015/12/2517:58:29

Const にするのでエラーになります。

Dim Fol As String
Fol = ThisWorkbook.Path & "\test\"
で出来ます。

これ以外の部分は検証していません。

  • アバター

    質問者

    ID非公開さん

    2015/12/2518:46:26

    早速のご返信有難うございます。
    ご指示の通りに記述しましたところ無事に出力されました。
    全て解決です。
    素晴らしい!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる