- 締切済み
〔エクセル〕セレクトしたセルの内容をリストにする
選択したいくつかのセルの内容をリストにしたいのです。 エクセルファイルもまた複数あります。 つまり、リストに複数ファイル分のセル内容を取得したいのですが、マクロでどうすればいいでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- merlionXX
- ベストアンサー率48% (1930/4007)
意味がよくつかめませんが、 > 選択したいくつかのセル 複数のブックやシートのセルをまとめて選択はできませんのでカーソルがあたっているセルという理解でよいでしょうか? > ファイル名一覧作成ソフトとか利用して、考えてみます。 といことはどこかのフォルダー内にあるブックに対して適用したいということですか? ならばこういうのはどうでしょう? このマクロを記述したブックのSheet1に指定したフォルダー内の以下のリストを作成します。 A列:ブック名 B列:シート名 C列:カーソルのあるセルのアドレス D列:そのセルの値 Sub TEST01() Dim myObj As Object Dim myDir As String, myFle As String Dim myWs As Worksheet, ws As Worksheet, wb As Workbook Dim c As Range Dim i As Long Set myObj = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選択してください", 0) If myObj Is Nothing Then Exit Sub If myObj = "デスクトップ" Then myDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") Else myDir = myObj.Items.Item.Path End If Application.ScreenUpdating = False '画面更新を一時停止 Set myWs = ThisWorkbook.Sheets("Sheet1") 'このコピー先ブックのSheet1をmyWsとする。 myFle = Dir(myDir & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until myFle = Empty '全て検索 If myFle <> ThisWorkbook.Name Then 'ブック名がこのブックの名前でなければ On Error GoTo line Application.EnableEvents = False 'イベント無効で開く Set wb = Workbooks.Open(myDir & "\" & myFle, UpdateLinks:=0) 'そのブックをLink非更新で開きwbとする。 For Each ws In wb.Worksheets '各ワークシートで ws.Activate If TypeName(Selection) = "Range" Then 'セルが選択されていたら For Each c In Selection With myWs i = i + 1 'カウント .Cells(i, "A").Value = wb.Name 'BOOK名 .Cells(i, "B").Value = ws.Name 'Sheet名 .Cells(i, "C").Value = c.Address(0, 0) 'アドレス .Cells(i, "D").Value = c.Value 'セルの値 End With Next c End If Next ws wb.Close (False) '保存の有無を聞かずに保存しないで閉じる End If myFle = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す line: Application.EnableEvents = True 'イベント無効解除 Application.ScreenUpdating = True '画面更新一時停止を解除 End Sub
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim h as range for each h in selection thisworkbook.worksheets("Sheet1").range("A65536").end(xlup).offset(1).value = h.value next end sub リストを集めるブックに上記のようなマクロを登録し,目的のブックを開いて幾つかのセルを選択しておいて,マクロを実行します。 なお,「複数のファイル」のセルを同時に(ブックをまたがって)セレクトする方法はありません。 今のアプローチを維持したいなら,ファイル一つずつ行ってください。 または,別のやり方であなたの使いやすい方法を考えてみてください。
お礼
有難うございます。 一度に出来るのはないみたいですね。 ファイル名一覧作成ソフトとか利用して、考えてみます。