• 締切済み

〔エクセル〕セレクトしたセルの内容をリストにする

選択したいくつかのセルの内容をリストにしたいのです。 エクセルファイルもまた複数あります。 つまり、リストに複数ファイル分のセル内容を取得したいのですが、マクロでどうすればいいでしょうか。

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

意味がよくつかめませんが、 > 選択したいくつかのセル 複数のブックやシートのセルをまとめて選択はできませんのでカーソルがあたっているセルという理解でよいでしょうか? > ファイル名一覧作成ソフトとか利用して、考えてみます。 といことはどこかのフォルダー内にあるブックに対して適用したいということですか? ならばこういうのはどうでしょう? このマクロを記述したブックの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)
回答No.1

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 リストを集めるブックに上記のようなマクロを登録し,目的のブックを開いて幾つかのセルを選択しておいて,マクロを実行します。 なお,「複数のファイル」のセルを同時に(ブックをまたがって)セレクトする方法はありません。 今のアプローチを維持したいなら,ファイル一つずつ行ってください。 または,別のやり方であなたの使いやすい方法を考えてみてください。

sayasayacchi
質問者

お礼

有難うございます。 一度に出来るのはないみたいですね。 ファイル名一覧作成ソフトとか利用して、考えてみます。

関連するQ&A