[[20200506153926]] 『エクセルの複数シートを1つのシートに単純にコピ』(あらじぃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルの複数シートを1つのシートに単純にコピーしたい』(あらじぃ)

社内住所録なのですが複数のシートにデータが散在しており、またそれぞれのシートで列の項目名や種類がばらばらです。
頻繁に文字列検索をするのですが、そのたびに検索と置換の画面で検索場所をブックに変更するのが煩わしいので、いっそすべてのシートを1シートにまとめたいと思います。
単純に、データの入っている領域を手動で囲ってすべてのシートを別シートにcopy&pasteしてもよいのですが、更新版が頻繁に出るので毎回それをやりたくありません。(タブが10以上あります)何か省力化する方法はないでしょうか。
ちなみに、最初から列の順番も項目数も各シートでばらばらなので、何も揃えて貼ることは考えていません。単純に空いているところにcopy & pasteを繰り返して、入力されている情報が1シートに入ってしまえばそれで構いません。

< 使用 Excel:Excel2016、使用 OS:Windows7 >


こんにちは ^^
w。。。大変ですね。。。^^;
いっそ、項目名を整理、統一されてはいかがでせうか。
ぜ〜んぶ ← 「全て」の方言かと?書き出すとかでも
10タブ「シート」位なら各タブの項目の行番号が解れば
何とかなるかも???。。。← 多分 ^^;
あえて、要らぬお世話でしたら、御意のままに。m(_ _)m
マクロでちゃちゃ!ぱぱっと。。。m(__)mm(__)mm(__)m

(隠居じーさん) 2020/05/06(水) 17:32


>何か省力化する方法はないでしょうか。
マクロで良ければ、
Ctrl+Shift+Q でブック検索窓を開く

https://oshiete.goo.ne.jp/qa/9159093.html
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.onkey
https://excel-ubara.com/excelvba4/EXCEL239.html

 Sub auto_open()
    Application.OnKey "+^{Q}", "検索"
 End Sub

 Sub auto_close()
    Application.OnKey "+^{Q}"
 End Sub

 Sub 検索()
    Cells(1).Find "", , xlValues, xlWhole, , , , False  '初期化
    CommandBars.FindControl(ID:=1849).Execute           '検索と置換
    Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"
    Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"     'オプションを開き、ブックに変更、検索窓に移動
 End Sub

(kazuo) 2020/05/06(水) 21:25


ありがとうございます。
以下の部分のみ使って、表示->マクロ の画面からこれを入力し、あわせてその画面のオプションボタンからCtrl+Shift+q をショートカットに定義しても、うまく行かないですね。(マクロ超初心者です)
確かにマクロ表示画面から実行ボタンを押す限りは機能しますが。
どうやらこの方法ですと、ただCtrl+Shift+q だけだと検索と置換の画面のオプションボタンが押されておらず、内部でも検索場所はシートのままだからだと思います。

Sub 検索()

    Cells(1).Find "", , xlValues, xlWhole, , , , False  '初期化
    CommandBars.FindControl(ID:=1849).Execute           '検索と置換
    Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"
    Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"     'オプションを開き、ブックに変更、検索窓に移動
 End Sub

私のやっていることが違うのでしょうか?? ご指導ください。
(あらじぃ) 2020/05/07(木) 09:47


良いリンクが見つかりません。
一旦、保存して閉じ、開き直しが必要です。
https://excel-excel.com/tips/vba_12.html

2018年よりマクロをお使いならマクロ超初心者とは言わせません。
(kazuo) 2020/05/07(木) 10:54


 こんにちは ^^
単純に丸写しモードですけど。。。^^;
既存の処理対象ブックをコピー後、一番左端に新規シートを書き
込み用に作成して、下記、BOOK名で保存してからお試しを。
[標準モジュールに下記コードをコピペです。]
'**********************************************************
'* zSnm に実際に読み込むシート名を記述してください「左から
'* 順に読込みです。
'* 項目欄以上の記述、空白等が読み込まれることもありますの
'* で、避けるならもう一工夫、必要です
'* 要、[IJ00002.xlsm]で保存
'**********************************************************
Option Explicit
Sub OneInstanceMain()
    Const zProgramID  As String = "IJ00002.xlsm"
    Dim zTb           As Workbook
    Dim zWs           As Worksheet
    Dim i             As Long
    Dim zSnm()        As Variant
    Dim zVar          As Variant
    Set zTb = Workbooks(zProgramID)
    Set zWs = zTb.Worksheets(1)
    zWs.UsedRange.Clear
    zSnm = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
    i = 1
    For Each zVar In zSnm
        With zTb.Worksheets(zVar)
            .UsedRange.Copy zWs.Cells(i, 1)
            i = zWs.UsedRange.Rows.Count + 1
        End With
    Next
    Set zTb = Nothing
    Set zWs = Nothing
    Erase zSnm
End Sub
とかでも (#^.^#)。。。m(_ _)m
(隠居じーさん) 2020/05/07(木) 13:31

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.