出来ればエクセルだけで完結させたいのですが、例えば100個のエクセルファイルの A1セルに入っている値(情報)を一気に抜き出し101目(べつに何個目でもいいですが)のエクセルに抜き出した値(情報)を表示させたいです。 アクセスでもいいですが、一番簡単な方法で抜き出す方法を教えてください。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/08/05 23:58:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:degucho No.1

回答回数281ベストアンサー獲得回数75

ポイント100pt

VBAマクロを記述したブックと同じフォルダ内にあるブックのA1セルの内容を
新規シートに転記するマクロを作成してみました


Public Sub ReadAllA1()

    'このフォルダ内のファイルを処理(今回はマクロ配置ブックと同じ場所とする)
    Dim baseDir As String
    baseDir = ThisWorkbook.Path + "\"
    
    'このパターンでxlsxもヒットする
    Dim pattern As String
    pattern = baseDir + "*.xls"
    
    Dim fileName As String
    fileName = Dir(pattern)
    
    Dim row As Integer
    row = 1
    
    '結果貼り付け用に新規シート作成
    Dim mySheet As Worksheet
    Set mySheet = Worksheets.Add
    
    Do While (fileName <> "")
        '自分自身以外のファイルの場合
        If (fileName <> ThisWorkbook.Name) Then
        
            'ブックを開いてA1を取得
            Dim wkb As Workbook
            Set wkb = Workbooks.Open(baseDir + fileName)
            Dim wks As Worksheet
            Set wks = wkb.Worksheets(1)
            Dim value As String
            value = wks.Range("A1").value
            
            '結果シートのA列にファイル名、B列にA1セルの値を転記
            mySheet.Cells(row, 1) = fileName
            mySheet.Cells(row, 2) = value
            row = row + 1
            
            Debug.Print value
            Set wks = Nothing
            wkb.Close
            Set wkb = Nothing
            
        
        End If
        fileName = Dir()
    Loop

    mySheet.Cells.EntireColumn.AutoFit
    Set mySheet = Nothing
    

End Sub

他2件のコメントを見る
id:miyako333

現実的には、例えば A1、C3、F4、 G1、H1,I1 の値を 抜き出して 今回教えてもらったみたいに

A列に ファイル名 B列に A1 C列にC3、D列にF4、 E列にG1、F列にH1、G列にI1セルの値を
つらつらと表示させたいです。

これだとどう書けばいいでしょうか。
マクロが苦手ですいません。 ぜひ教えて助けてください。
よろしくお願いします。

2016/08/07 17:24:13
id:degucho

直してみました。
苦手なのにVBAはOKですとか
質問に具体例を書かないのはダメですよ

Public Sub ReadAll()

    'このフォルダ内のファイルを処理(今回はマクロ配置ブックと同じ場所とする)
    Dim baseDir As String
    baseDir = ThisWorkbook.Path + "\"
    
    'このパターンでxlsxもヒットする
    Dim pattern As String
    pattern = baseDir + "*.xls"
    
    Dim fileName As String
    fileName = Dir(pattern)
    
    Dim row As Integer
    row = 1
    
    '結果貼り付け用に新規シート作成
    Dim mySheet As Worksheet
    Set mySheet = Worksheets.Add
    
    Do While (fileName <> "")
        '自分自身以外のファイルの場合
        If (fileName <> ThisWorkbook.Name) Then
        
            'ブックを開いてA1を取得
            Dim wkb As Workbook
            Set wkb = Workbooks.Open(baseDir + fileName)
            Dim wks As Worksheet
            Set wks = wkb.Worksheets(1)
            
            Dim valueA1 As String
            Dim valueC3 As String
            Dim valueF4 As String
            Dim valueG1 As String
            Dim valueH1 As String
            Dim valueI1 As String
            
            valueA1 = wks.Range("A1").value
            valueC3 = wks.Range("C3").value
            valueF4 = wks.Range("F4").value
            valueG1 = wks.Range("G1").value
            valueH1 = wks.Range("H1").value
            valueI1 = wks.Range("I1").value
            
            '結果シートのA列にファイル名、B列以降に取得した値を転記
            mySheet.Cells(row, 1) = fileName
            mySheet.Cells(row, 2) = valueA1
            mySheet.Cells(row, 3) = valueC3
            mySheet.Cells(row, 4) = valueF4
            mySheet.Cells(row, 5) = valueG1
            mySheet.Cells(row, 6) = valueH1
            mySheet.Cells(row, 7) = valueI1
            row = row + 1
            
            Set wks = Nothing
            wkb.Close
            Set wkb = Nothing
            
        
        End If
        fileName = Dir()
    Loop

    mySheet.Cells.EntireColumn.AutoFit
    Set mySheet = Nothing

End Sub

2016/08/08 23:09:34

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません