VBA・マクロツール

【知らなくても使える】他Excelファイルのセル範囲の値を取り込んで貼り付けるマクロツール(Excel VBA)

複数あるExcelファイルまたは複数シートのある部分のセルを一括で取得して値を貼り付けたいと思ったことはないでしょうか。

 

例えば、定例業務として毎月のデータが入ったExcelファイルをあるフォルダにまとめて保存されており、その中のある一部分(特定のセル範囲)のデータをとるために、複数あるファイルを一つずつ開いて特定の部分をコピペ&コピペ&コピペ…という非常に手間がかかる作業をしていないだろうか。

 

それらのファイルを開いてコピペ、開いてコピペ…という手間がかかる作業をボタン一つで完了させるツール『他Excelファイルのセル範囲の値を一括取得するツール』をExcelマクロで作成しましたので、是非ご活用頂けたらと思います。

 

また、似たツールとして、別ファイルの指定した範囲を、任意のファイルのセルに貼り付けるツールも作成しましたので、よろしければご参照ください。

【知らなくても使える】指定したセル範囲の値を別Excelファイルに貼り付けるマクロツール(Excel VBA) Excelファイル内の全シートのセル範囲にある値を一括で取得して、他のExcelファイルに横流しで値を貼り付けたいと思ったことは...

 

ツールの更新履歴

(2022年9月3日:更新)
・貼り付けルールを「左列から順に貼り付け」で、かつ「終了セル」で指定されたセルが “結合されたセル” であった場合に正常に動作しない不具合を修正

(2023年5月6日:更新)
・貼り付けルールに「上から順に貼り付け」を追加
・デザインとUIを変更

(2023年8月11日:更新)
・Excelファイルを指定して値を取込む際に複数ファイルを選択できるように修正
・全てを貼り付けした際に、列幅等もコピー元と同様になるように修正

 

『別Excelファイルのセル範囲の値を順に貼り付けるツール』の概要

取得したセル範囲や貼り付けるルール等を指定する設定画面(設定シート)を用意して、設定画面内で以下を指定します。

  • コピーするセル範囲(開始セル、終了セル)
  • 対象にするシート名(※なければ全てのシート)
  • 貼り付けるセル位置
  • 貼り付け形式(全て、値、数式を貼り付け。から選択)
  • 貼り付けルール(シート別に貼り付け、左列から順に貼り付け。から選択)

 

後は、対象のExcelファイルを指定して実行するか、当ツールがある同階層のExcelファイル全てに対して実行するかを押すボタンを変えることで選択できます。

 

下に説明動画を載せますので、ご確認ください。

説明動画

 

 

当ツールの使用方法

基本的な機能、操作方法の説明

  1. 実行するマクロが入ったExcelファイル(当ツールのマクロ付き)を開きます。

※当ツールのVBAコードを含んでいて、「設定」シート(設定情報を書き込めるシート)がファイル内に存在している状態のファイルです。

 

  1. 「設定」シート内で当ツールを実行するために、以下の設定値を記載します。
  • コピーするセル範囲(開始セル、終了セル)
    → 列アルファベット、行番号の順で入力してください。例:A1、D20 など
  • 対象にするシート名
    → 値がない場合は、対象のExcelファイル内の全てのシートを対象にセル範囲の値を取得します。
  • 貼り付けるセル位置
    → 列アルファベット、行番号の順で入力してください。
    なお、<貼り付けルール>で「左列から順に貼り付け」が選択されている場合は、このセル位置から始まり、貼り付け後の一つ右にあるセルに順に貼り付けられていきます。
  • 貼り付け形式(全て、値、数式を貼り付け。から選択)
    → どれか一つを選択してください。
  • 貼り付けルール(シート別に貼り付け、左列から順に貼り付け、上から順に貼り付けから選択)
    → どれか一つを選択してください。
    「左列から順に貼り付け」を選択した場合は、一つのシートで指定した貼り付ける開始セルから左へ順に貼り付けられます。
    ※シート名はファイル名から拡張子を無くした名称になります。

 

3.「Excelファイルを指定して値を取込」か「同階層の全Excelファイルの値を取込」のどちらかのボタンを押します。

 

「Excelファイルを指定して値を取込」を押した場合は、ファイルを指定するダイアログが表示されますので、対象のExcelファイルを選択してツールを実行してください。

 

「同階層の全Excelファイルの値を取込」を押した場合は、当ツールが配置されている階層と同じ階層にある全Excelファイルを対象として当ツールが実行されます。

貼り付けルールを「上から順に貼り付け」にした場合は、貼り付け終了した行の次の行から順に値を貼り付けます。

 

貼り付けルールを「シート別に貼り付け」にして実行した場合は、取り込んだファイル分の各シートの指定したセル範囲の値が取り込まれます。

 

また、同階層のファイルを対象にして実行した場合のシート名はPG内の値を変更することで変えることができますので、必要に応じてカスタマイズして頂ければと思います。

 

留意事項

セルの指定ルール

セルの指定する箇所は列アルファベット、行番号の順で記載する必要があり、列番号、行番号の場合は正常に動作しない可能性があります。

取り込んだ際に同名のシートが存在した場合の処理

既にあるシートを取り込んだ場合は、シート名+連番のような形式のシート名になります。

 

使用する際の事前準備

このページの下部にある「Excelファイルのツール」からExcelファイルを取得し、「準備の手順」内にあるVBAコードを取得したExcelファイルに記載して保存すれば、すぐに当ツールを使用できます。

 

以下にその手順を説明していきます。

 

準備の手順

1.当ツールのダウンロードはこちら」からサンプル(Excelファイル)をダウンロードします。

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、設定画面(設定シート)が入っているマクロ無しExcelファイルを公開しています。

 

2.ダウンロードしたExcelファイルの上部にあるリボンの「開発」タブから「visual basic」を選択して、VBE(visual basic for application)を起動させます。

 

リボンに「開発」タブが表示されていない場合は、以下を参照ください

【初心者向け】Excel VBAを学び始める前に行うべきおすすめ初期設定! 日常業務でExcelを使っている場合に、業務を効率化させるためにExcelのマクロ等を実行することがあると思います。 Ex...

 

3.「プロジェクト」に「標準モジュール」を追加して、追加された「Module1」にVBAコードを記載します。

 

VBAのソースコードはこちら

以下のVBAコードをコピーして、「Module1」内のエディターに貼り付けます。

※VBAコードの右上のアイコンをクリックするとソースコードをコピーできます

Option Explicit

'-----(設定値)------------------------
Private Const CStartCellPoint = "C8"        '1.設定シート内のコピーする開始セル位置
Private Const CEndCellPoint = "D8"          '2.設定シート内のコピーする終了セル位置
Private Const CSheetNmPoint = "G7"          '3.設定シート内のコピーするシート名
Private Const PCellPoint = "D14"            '4.設定シート内の貼り付けする開始セル位置
Private Const MltFileSheetNm = "統合"       '5.「同階層の全ファイルを対象」かつ「左列から順に貼り付け」で実行した際のシート名

'-----(メッセージ)--------------------
Private Const Msg1 = "指定したシートが存在しません。"
Private Const Msg2 = "指定したExcelファイル内のセル範囲の値の取込が完了しました。"
Private Const Msg3 = "同階層にある全Excelファイル内のセル範囲の値の取込が完了しました。"
Private Const WMsg1 = "貼り付け形式を複数選択しているか、または一つも選択していません。" & vbCrLf & "一つだけ選択してください。"
Private Const WMsg2 = "貼り付けルールを複数選択しているか、または一つも選択していません。" & vbCrLf & "一つだけ選択してください。"
Private Const EMsg1 = "予期せぬエラーが発生しました。"
'---------------------------------------

Dim CStartCell As String
Dim CEndCell As String
Dim CSheetNm As String
Dim PStartCell As String
Dim PasteOpt1 As String
Dim PasteOpt2 As String
Dim ProcessCnt As Long
Dim TgtSheetNm As String
Dim BaseBook As Workbook
Dim SettingSheet As Worksheet

'===================================
'Excelファイルを指定して取込した際の処理
'===================================
Sub Click_ファイル指定して取込()

    On Error GoTo err
    ProcessCnt = 0
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Dim filePaths As Variant
    Dim filePath As Variant
    Dim fileName As String

    Set BaseBook = ActiveWorkbook
    Set SettingSheet = ActiveSheet

    '設定情報を取得する
    Call GetSetting

    'Excelファイルを指定するダイアログの表示
    filePaths = Application.GetOpenFilename( _
                    Filefilter:="Microsoft Excelブック,*.xls?", _
                    Title:="取り込むExcelファイルを指定してください。", _
                    MultiSelect:=True)
    
     If IsArray(filePaths) Then
        
        For Each filePath In filePaths

            fileName = Dir(filePath)
            Workbooks.Open (filePath), UpdateLinks:=1
            
            If UBound(filePaths) = 1 Then
            
                '選択したファイルが一つの場合の貼り付け処理
                Call GetPasteSheetInfo(fileName, 1)
            Else
            
                '複数ファイルを選択した場合の貼り付け処理
                Call GetPasteSheetInfo(fileName, 2)
            End If
        Next
        
    'キャンセルが選択された場合はダイアログを閉じる
    Else
        End
    End If
    
    Worksheets(SettingSheet.Name).Select
    
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    
    MsgBox Msg2 & vbCrLf & "取込件数:" & ProcessCnt & "件"
    ProcessCnt = 0
    Exit Sub
    
err:
    MsgBox EMsg1, vbOKOnly + vbCritical
    
End Sub

'===================================
'同階層の全Excelファイルを取込した際の処理
'===================================
Sub Click_全ファイルを取込()
    
    On Error GoTo err
    ProcessCnt = 0
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Dim fileName As String

    Set BaseBook = ActiveWorkbook
    Set SettingSheet = ActiveSheet
    
    '設定情報を取得する
    Call GetSetting
    
    '同階層にあるExcelファイルを全て取得する
    fileName = Dir(ThisWorkbook.Path & "\" & "*.xlsx")
    
    Do While fileName <> ""
        Workbooks.Open ThisWorkbook.Path & "\" & fileName
        
        '他Excelファイルの値を取得して、実行したExcelファイルに貼り付ける
        Call GetPasteSheetInfo(fileName, 2)
        
        fileName = Dir
    Loop
    
    Worksheets(SettingSheet.Name).Select
    
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    
    MsgBox Msg3 & vbCrLf & "取込件数:" & ProcessCnt & "件"
    ProcessCnt = 0
    Exit Sub
    
err:
    MsgBox EMsg1, vbOKOnly + vbCritical
    
End Sub

'-------------------------
'設定情報を取得する
'-------------------------
Sub GetSetting()

    Dim selectItem As Variant
    Dim i
    Dim opt1SelCnt As Long: opt1SelCnt = 0
    Dim opt2SelCnt As Long: opt2SelCnt = 0
    
    CStartCell = ActiveSheet.Range(CStartCellPoint).Value   'コピー開始のセル位置
    CEndCell = ActiveSheet.Range(CEndCellPoint).Value       'コピー終了のセル位置
    PStartCell = ActiveSheet.Range(PCellPoint).Value        '貼り付け開始のセル位置
    CSheetNm = ActiveSheet.Range(CSheetNmPoint).Value       'コピー対象シート名
    
    With ActiveWorkbook.SlicerCaches("スライサー_貼り付け形式")
        For Each selectItem In .SlicerItems
            If selectItem.Selected = True Then
                opt1SelCnt = opt1SelCnt + 1
                PasteOpt1 = selectItem.Value
            End If
        Next
    End With
    
    If opt1SelCnt <> 1 Then
        MsgBox WMsg1, vbExclamation
        End
    End If
    
    With ActiveWorkbook.SlicerCaches("スライサー_貼り付けルール")
        For Each selectItem In .SlicerItems
            If selectItem.Selected = True Then
                opt2SelCnt = opt2SelCnt + 1
                PasteOpt2 = selectItem.Value
            End If
        Next
    End With
    
    If opt2SelCnt <> 1 Then
        MsgBox WMsg2, vbExclamation
        End
    End If
    
End Sub

'-------------------------
'他Excelファイルの値を取得して、実行したExcelファイルに貼り付ける
' 引数:ファイル名、処理種類(1:一つのファイルを対象に実行、2:複数ファイルを対象に実行)
'-------------------------
Sub GetPasteSheetInfo(fileName As String, doType As Long)

    Dim selBook As Workbook
    Set selBook = ActiveWorkbook
    Dim tmpSheet As Worksheet
    
    Dim tmpWs As Worksheet
    Dim existFlg As Boolean: existFlg = False
    
    '「対象シート名」が空白じゃない場合、対象ファイル内に当該シートが存在するか確認する
    If CSheetNm <> "" Then
        
        For Each tmpWs In selBook.Worksheets
            If tmpWs.Name = CSheetNm Then existFlg = True
        Next tmpWs
        If existFlg = False Then
            MsgBox "「" & fileName & "」には" & Msg1, vbInformation
            selBook.Close SaveChanges:=False
            Exit Sub
        End If
    End If
    
    '貼り付けルールが「左から順に貼り付け」または「上から順に貼り付け」の場合
    If PasteOpt2 = "左列から順に貼り付け" Or PasteOpt2 = "上から順に貼り付け" Then
        
        If ProcessCnt = 0 Then
        
            If doType = 1 Then
            
                '拡張子無のファイル名を取得する
                TgtSheetNm = Left(Left(fileName, InStrRev(fileName, ".") - 1), 31)
                
            ElseIf doType = 2 Then
            
                '新規シート名称を予め設定した値にして、新規シートを作成する
                TgtSheetNm = MltFileSheetNm
                
            End If
            
            existFlg = False
            
            '既に存在しているシート名の場合は、シート名の後に連番を付与する
            For Each tmpWs In BaseBook.Worksheets
                If tmpWs.Name = TgtSheetNm Then existFlg = True
            Next tmpWs
            
            If existFlg = True Then
                BaseBook.Worksheets(TgtSheetNm).Copy After:=BaseBook.Worksheets(TgtSheetNm)
                TgtSheetNm = ActiveSheet.Name
                
                Application.DisplayAlerts = False
                BaseBook.Worksheets(TgtSheetNm).Delete
                Application.DisplayAlerts = True
            End If
        
            'ツールを実行したExcelファイルに新規シートを作成する
            BaseBook.Sheets.Add After:=BaseBook.Sheets(BaseBook.Sheets.Count)
            BaseBook.Sheets(BaseBook.Sheets.Count).Name = TgtSheetNm
        
        End If
        
    End If
    
    '対象ファイルの全シートを1つずつループして処理する
    For Each tmpSheet In selBook.Worksheets
        
        If CSheetNm = "" Or tmpSheet.Name = CSheetNm Then
        
            Dim pSCell As String
            Dim yPoint As Long
            Dim xPoint As Long
                
            '貼り付けルールが「シート別に貼り付け」の場合
            If PasteOpt2 = "シート別に貼り付け" Then
            
                Dim tmpSheetNm As String
                
                '既に存在しているシート名の場合は、シート名の後に連番を付与する
                tmpSheet.Copy After:=BaseBook.Worksheets(SettingSheet.Name)
                tmpSheetNm = ActiveSheet.Name
                
                Application.DisplayAlerts = False
                BaseBook.Worksheets(tmpSheetNm).Delete
                Application.DisplayAlerts = True
                
                BaseBook.Sheets.Add After:=BaseBook.Sheets(BaseBook.Sheets.Count)
                BaseBook.Sheets(BaseBook.Sheets.Count).Name = tmpSheetNm
                
                '対象範囲をコピーして、実行したExcelファイルに貼り付ける
                Call CopyAndPaste(tmpSheet, tmpSheetNm, PStartCell)
                
            '貼り付けルールが「左列から順に貼り付け」の場合
            ElseIf PasteOpt2 = "左列から順に貼り付け" Then
                
                If ProcessCnt <> 0 Then
                    yPoint = BaseBook.Sheets(TgtSheetNm).Range(PStartCell).Row
                    xPoint = BaseBook.Sheets(TgtSheetNm).Range(PStartCell).SpecialCells(xlCellTypeLastCell).Column + 1
                    pSCell = Cells(yPoint, xPoint).Address
                Else
                    pSCell = PStartCell
                End If
                
                '対象範囲をコピーして、実行したExcelファイルに貼り付ける
                Call CopyAndPaste(tmpSheet, TgtSheetNm, pSCell)
                                
            '貼り付けルールが「上から順に貼り付け」の場合
            Else
            
                If ProcessCnt <> 0 Then
                    xPoint = BaseBook.Sheets(TgtSheetNm).Range(PStartCell).Column
                    yPoint = BaseBook.Sheets(TgtSheetNm).Range(PStartCell).SpecialCells(xlCellTypeLastCell).Row + 1
                    pSCell = Cells(yPoint, xPoint).Address
                Else
                    pSCell = PStartCell
                End If
                
                '対象範囲をコピーして、実行したExcelファイルに貼り付ける
                Call CopyAndPaste(tmpSheet, TgtSheetNm, pSCell)

            End If
            ProcessCnt = ProcessCnt + 1
        End If
    Next
    
    Workbooks(fileName).Close SaveChanges:=False

End Sub

'-------------------------
'対象範囲のセルをコピーして、実行しているExcelファイルに貼り付ける
' 引数:コピー対象のシート、貼り付け対象のシート名、貼り付け開始するセル位置
'-------------------------
Sub CopyAndPaste(cSheet As Worksheet, pSheetNm As String, startCell As String)

    cSheet.Range(CStartCell & ":" & CEndCell).Copy
    
    Select Case PasteOpt1
        Case "全てを貼り付け"
            BaseBook.Sheets(pSheetNm).Range(startCell).PasteSpecial Paste:=xlPasteAll
            BaseBook.Sheets(pSheetNm).Range(startCell).PasteSpecial Paste:=xlPasteColumnWidths
        Case "値を貼り付け"
            BaseBook.Sheets(pSheetNm).Range(startCell).PasteSpecial Paste:=xlPasteValues
        Case "数式を貼り付け"
            BaseBook.Sheets(pSheetNm).Range(startCell).PasteSpecial Paste:=xlPasteFormulas
    End Select

End Sub

 

4.作成したExcelファイルを「.xlsm」形式(マクロが動作するファイル形式)で保存します。

 

5.「Excelファイルを指定して値を取込」と記載された図形にメイン処理「Click_ファイル指定して取込」のマクロを設定します。

6.「同階層の全Excelファイルの値を取込」と記載された図形にメイン処理「Click_全ファイルを取込」のマクロを設定します。

これで事前準備は完了です

あとは「基本的な機能、操作方法の説明」で記載された方法でツールを実行できます。

 

なお、当マクロの開発環境は、OS:Windows10 、Excelソフトウェア:Microsoft Office 365となっており、当環境では動作確認ができていますが、他の環境で正常に動作するかは確認できていません。

正常に動作しない場合は、コメントいただければ幸いです。

 

 

また以下にて、このような業務効率化できるツールを機能ごとの一覧でまとめてますので、ご興味のある方はご覧ください。

 

自力で業務効率化できるツール等を作成する場合は、オンラインITスクール」を利用するとモチベーションを保ちつつ、効率的に学習とアウトプットができると思います。

\ 今なら1か月間全額返金保証!! /

上記の「侍テラコヤ」月額2,980円~ という日本最安級の料金でプログラミング学習ができ、今なら初めての方でも安心できる「1か月全額返金保証」があります

自分に合わないと感じた場合は返金してもらえるため、ノーリスクで試すことができます。是非一度体験してみることをオススメします ^ ^

 

ツールのダウンロードはこちら

下記よりExcelファイルをダウンロードして、記事の途中にありました VBAのソースコードをツール内に組み込んで使用してください。

【Excel VBA】他Excelファイルのセル範囲の値を一括取得するツール

ツールのダウンロードはこちら

※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、マクロ無しExcelファイルを公開しています

他に要望等ありましたら、可能な限り改修等を対応しますのでコメント頂ければと思います

 

<このツールが『結構使える!』と思ったら、下のグッドボタンを押していただけたら幸いです>

コメントはこちら

  1. ヨシダ より:

    RH様

    はじめまして、ヨシダと申します。
    これからVBAを学んでいこうと思い、やりたい事を検索した結果このサイトにたどり着きました。

    当方、jsやgasは少し分かる程度でVBAをさわるのは初めてになります。

    本ツール大変すばらしいものと思い、ダウンロードし、モジュール設定をした所、同階層の全ての全Excelファイルの値を取込は機能するものの、Excelファイルを指定して値を取込のボタンを押した所「予期せぬエラーが発生しました」と表示され起動できない状態になりました。Excelのバージョンは2019になります。

    もし原因にお心あたりありましたらご教授お願い出来ないでしょうか?宜しくお願い致します。

  2. 匿名 より:

    RH様

    度々申し訳ありません。

    どうやら読み込めるファイルもある様です。読み込めないファイルとの差を確認し原因を確認したいと思います。

    • RH より:

      管理人のRHです。
      ヨシダさん、ツールのご使用とコメントありがとうございます。

      調査してみると不具合が見つかりました。
      貼り付けルールを「左列から順に貼り付け」で、かつ「終了セル」で指定されたセルが結合セルであった場合にエラーが発生してうまく動作しませんでした。
      近日中にバグを修正して、改めて公開いたします。

      ご不便おかけしますが、少々お待ちください。

      • RH より:

        管理人のRHです。
        ヨシダさん、大変遅くなりました。

        2022年9月3日の更新分にて、「予期せぬエラーが発生しました」と表示されて動作しない場合(読み込めるファイルと読み込めないファイルがあり)の不具合がおそらく解消されたと思います。※ソースコードを修正しました。

        一度使用していただき、再度不具合が発生するようでしたら再度コメント願います。

        ====================
        別件として、ご要望でありました既存のシートに上書きすることができるようにする仕様は、もう少々お待ちください。
        大きな修正になりそうなので別のツールとして公開したいと思います。完成しましたら再度お知らせいたします。

  3. ヨシダ より:

    RH様

    ちなみになんですが、貼り付け先を既存のシートに上書きすることは可能でしょうか?

    当方やりたいことは、例えば月間のシフトから日毎のシフトを作成したい。日毎のシフトのシートには関数などで月間のシフトからデータを読み込める

    月間のシフトの書式は同じなので、来月の月間シフトを今月の月間シフトに上書きすれば、来月分の日毎のシフトが自動で作成される。

    お忙しい中とは存じますが何卒よろしくお願いします。

    • RH より:

      管理人のRHです。
      ヨシダさん、改めてツールのご使用とコメントありがとうございます。
      ※重複したコメントは削除させていただきましたので、ご了承ください。

      下記に関しては、既存のシートに上書きすることは可能だと思います。
      >貼り付け先を既存のシートに上書きすることは可能でしょうか?

      おっしゃっていただいた内容はある程度は理解できたつもりですので、一度構成を検討してみたいと思います。改めてこちらでコメントいたします。

  4. ヨシダ より:

    返信ありがとうございます。更新チェックさせてもらいましす。よろしくお願いいたします。

    • RH より:

      管理人のRHです。
      ヨシダさん、大変お待たせいたしました。

      貼り付け先を既存のシートに上書きすることは可能な仕様のツールを作成しましたので、一度ご使用いただきイメージと異なる場合は改めてコメント頂けますと幸いです。

      『セル範囲の値を取得して、指定したExcelファイルに貼り付けるツール』(https://resthill.blog/excel-vba-tool19/)

  5. ヨシダ より:

    RH様

    作成ありがとうございます!!

    夜にでも使用させていただきます!

  6. ミズタ より:

    管理人様
    初めまして。ミズタと申します。
    説明に記載されているExcelと実際ダウンロードしたExcelで形式が違っていて、使用方法の5番以降ができません。
    確認お願いできますでしょうか?

    • RH より:

      管理人のRHです。
      ミズタさん、コメントありがとうございます。

      申し訳ありません、おっしゃる通りサイト内の説明書きの設定画面とダウンロードできるツールの設定画面が異なっていました。

      改めて、サイト内の説明書きと同一のツールをアップロードしましたので、改めてご確認いただければ幸いです。

  7. anzai より:

    とても参考にさせて頂いております。
    同階層の全ファイルの値取込のマクロのほうが予期せぬエラーが生じてしまいます。
    方法ございましたら、ご教授下さい。

  8. anzai より:

    度々申し訳ございません。

    左から順に貼り付けるのではなく、
    下にどんどん貼り付けていくコードを教えて頂きたいです。

    • RH より:

      管理人のRHです。
      anzaiさん、ツールのご使用とコメントありがとうございます。

      予期せぬエラーが生じたようですが解決したとのことで良かったです。
      コメント頂いた内容でツールをアップデートしましたので、改めてダウンロードとVBAコードの貼り付けをしていただければ、下へ貼り付けることができるようになっています。

      なお、差し支えなければ解決した予期せぬエラーは何が原因で起こっていたか分かりましたら教えていただけますと幸いです。

      • anzai より:

        RH様

        コメントするところを間違えてしまいました汗
        再度お送りします↓

        完璧です!!!!ありがとうございます( ;∀;)
        迅速なご対応感謝いたします!!

        エラー解消ですが
        ダウンロードしたエクセルファイルを
        ダウンロードのフォルダから他のフォルダに移動して使用した際に同階層のほうだけ予期せぬエラーになりました。
        解決方法はみつからなかったのですが、
        ダウンロードフォルダでマクロ実行すると使用できたので私的には問題ありませんでした。

        • RH より:

          管理人のRHです。
          anzaiさん、ツールのご使用とコメントありがとうございます。
          ※誤った箇所でのコメントについては削除しておきました。

          問題なく使用できたとのことで良かったです。^^

          発生したエラーでダウンロードフォルダからなら動作するところを別のフォルダに移動すると動作しなかったという件はについて、確実な解決方法は分からないですが、エラーが発生したフォルダ名称やフォルダパスに原因がある可能性があります。

          またなにかありましたら遠慮なくコメント等いただけますと幸いです。

  9. anzai より:

    再び質問なのですが
    「同階層の全Excelファイルの値を取込」では
    いくつのファイルまで取込可能でしょうか。
    200程のエクセルファイルを一気に集計したかったのですがエラーになってしまいました。やはり現実的に厳しいのでしょうか?

    • RH より:

      管理人のRHです。
      anzaiさん、ツールのご使用とコメントありがとうございます。

      「同階層の全Excelファイルの値を取込」ではファイル数の上限は特に設けてはいませんが、処理が追いついていない可能性があります。

      ちなみにですが、どのようなエラーが表示されるか分かりますでしょうか?

      • anzai より:

        返信遅くなり申し訳ございません。
        確認したところ、ファイル数が問題ではなく、
        いくつかの取込ファイルが破損していることが問題でした。
        この場合の対策などはありますでしょうか??

        • RH より:

          管理人のRHです。
          anzaiさん、コメントありがとうございます。

          破損の状態にもよりますが、いくつかの取込ファイルが破損している場合は、取り込む範囲にあるデータで破損したものがないか確認してみてください。
          もし破損している場合は、可能でしたら当該箇所のデータを修正して破損がない状態で再度ツールを実行してみてください。

          破損の詳細がないとなんとも言えない部分はあるのですが。汗

  10. kaji より:

    「同階層の全Excelファイルの値を取込」を使用したところ、
    予期せぬエラーの表示が出て使用できませんでした。
    ツールをダウンロードフォルダに格納しておけば使用可能なので、
    OneDriveがかかわるフォルダで使用するとエラーが出るようです。。。(パスが取得できていなそう?)

    エクセルファイルを選択して貼り付けする方法で複数のファイルを選択して貼り付けもできたらと思いました。。。

    素人質問で申し訳ありませんが、このような場合の対策をお教えください。よろしくお願いいたします。

    • RH より:

      管理人のRHです。
      kajiさん、ツールのご使用とコメントありがとうございます。

      一つ目のOneDriveにフォルダを保存するとエラーが表示される問題についてですが、これについてはExcelVBAの動作仕様上、解消することが難しいようです。

      二つ目のエクセルファイルを選択して貼り付けする際に複数ファイルを選択できるようにしたほうが良いとのことですが、そのように改修したいと思います。

      改めて改修後にアップロードしますので、お待ちください。

      • RH より:

        管理人のRHです。
        kajiさんへ

        エクセルファイルを選択して貼り付けする際に複数ファイルを選択できるように改修しましたので、機会がありましたら改めてツールを使ってみてください。

        • kaji より:

          返信が遅くなり、申し訳ございません
          ご回答、ご対応いただきありがとうございます。

          完璧でした!!ぜひ使用させていただきます!!!