プロが教える店舗&オフィスのセキュリティ対策術

マクロ超初心者です ファイルの読込フォルダを固定から選択式に変更したいです。
下記のC:\test\フォルダの指定をコメントバック部分に入れ替えただけでは
「実行時エラー'13' 型が一致しません。」となってしまいます。
何か定義の型とか色々と修正しないと駄目かと思いますが、超初心者が切り貼りで
作っている状態でぜんぜんわかりません。
どなたか教えてください、よろしくお願いします。

Private Const MESSAGE_START = "ファイルの読み込みを開始します" & vbCrLf & "フォルダを選択してください。"
Private Const MESSAGE_FINISH = "ファイルの読み込みが完了しました"
Sub ExcelbookCombine()
'-------------------------------------------------------------------------------------------------------
'処理開始
'-------------------------------------------------------------------------------------------------------
MsgBox MESSAGE_START
Range("A2:Z10000").Select
Selection.ClearContents
Range("A2:Z10000").ClearFormats
'With Application.FileDialog(msoFileDialogFolderPicker)
' If .Show = 0 Then Exit Sub
' FolderPath = .SelectedItems(1)
'End With
Const Fol As String = "C:\test\"
Dim Fn
Dim NewFile As Workbook
Dim Wb As Workbook
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim R As Range
Dim SrcRng As Range
Dim Rng As Range
Set SrcRng = ActiveSheet.Range("A2")
Set Ws1 = Worksheets(1)
Set R = Ws1.Range("A2")
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の2行目から8列目までをコピーして結合する
'Ws2.Range("A2", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 17).Copy R
' Set R = R.End(xlDown).Offset(1)
'Ws2.Range("A2", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 17).Copy R
'Ws2.Range("A2:P" & Ws2.Range("A65536").End(xlUp).Row).Copy R.Range("a" & Ws1.Range("a65536").End(xlUp).Row).EntireRow.PasteSpecial(xlPasteValues)
'Ws2.Range("A2:P" & Ws2.Range("A65536").End(xlUp).Row).Copy Ws1.Range("a" & Ws1.Range("a65536").End(xlUp).Row + 1).PasteSpecial(xlPasteValues)
' Set R = R.End(xlDown).Offset(1)
' データの行数 = Ws2.Cells(Rows.Count, 1).End(xlUp).Row
' Ws1.Range("A2:P" & データの行数).Value = Ws2.Range("A2:P" & データの行数).Value
With Wb.Worksheets(1)
Set Rng = Ws2.Range("A2", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 16)
SrcRng.Offset(i).Resize(Rng.Rows.Count, 16).Value = Rng.Value
i = i + Rng.Rows.Count '一行開ける
End With
Wb.Close
'Debug.Print Fn
Fn = Dir
Loop
MsgBox MESSAGE_FINISH
Set R = Nothing
Set Ws1 = Nothing: Set Ws2 = Nothing
Set Wb = Nothing: Set NewFile = Nothing
End Sub

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

  • うーん・・・

    型が一致しませんで、下記が反転表示になります

    Fn = Dir(Fol, vbNormal)

      補足日時:2016/04/16 15:59

A 回答 (1件)

そもそもなんのマクロ?



マクロって一般名詞であって、色んなシステムやツールのマクロがあるだが?
    • good
    • 0
この回答へのお礼

そうだったんですね、初心者すぎてすいません。
これはエクセルのマクロ?でしょうか。
エクセルで機能させたいものになります。
複数のエクセルファイルから一枚のシートに
値をコピペしたいのです。
そのファイルが入っているフォルダを
選択するように変更したいのです。
今はCドライブのtestフォルダが初期設定
みたいになっている状態なので。

お礼日時:2016/04/16 15:11

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