Excel ブック内の指定したデータのコピーマクロ

このQ&Aのポイント
  • エクセルで自動登録で自動化をしていますが、限界があり今回こちらに書き込み。
  • マクロスタートでダイアログがでて指定した新しいブック内の指定したシートの指定したセルにあるデータをコピーしてテンプレートとしている空のブックにペーストするマクロを作りたい。
  • ネットで探しましたが、ダイアログでファイルを開くマクロやブックを開かないで中のデータを読み込むマクロは見つけられませんでした。
回答を見る
  • ベストアンサー

Excel ブック内の指定したデータのコピーマクロ

よろしくお願いします。 エクセルで自動登録で自動化をしていますが、これだと限界があり今回こちらに書き込みさせていただきました。 流れとしては、マクロスタートでダイアログがでて(可能なら奥底に格納されるブックなのでそのフォルダの一個前辺りの階層指定されて)そこで指定した毎日新しく作られるブック内の指定したシートの指定したセルにあるデータをコピー(ブックは開かないで読み込み)してテンプレートととしている空のブックを開き(開いたまま)指定したシートの指定したセルにペーストするマクロを作りたいです。 (指定したシートと指定したセルの名前は常に同じです) 自動記録で指定したブックを開いて読み込む事は出来ましたが、毎回別のブックなのでそれでは事足りないのです。 ネットで探しましたが… ・ダイアログでファイルを開くマクロは見つけましたが、開いた後内部のデータを読み込むなどマクロは見つかりませんでした。 つながるところがわかりません。 ・(存在するブックの場所指定で)ブックを開かないでその中のデータを読み込むマクロは見つけましたが、ダイアログで選ぶけど開かないでと言う事が出来るマクロは見つけられませんでした これらは元々出来ないのでしょうか? 可能で有ればご教示下ださると助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.4

> 参照するsansho.xlsのsheet111のE1,F1,G1から最後の行までの各データを > テンプレートのtempe.xlsのsheet888のA1,B1,C1から下へ個々にペーストしたいです。 参照するシートは選択したブックがwbにセットされますからコード上にsansho.xlsは出ません。 シート名やブック名は補足からコピペしています。半角全角などの違いがあればエラーになります。 Sub Test() Dim myFile As Variant Dim xls As New Excel.Application Dim wb As Workbook Dim LastRow As Long, i As Long ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) For i = Columns("A").Column To Columns("C").Column LastRow = wb.Worksheets("sheet111").Cells(1, i + 4).End(xlDown).Row Workbooks("tempe.xls").Sheets("sheet888").Cells(1, i).Resize(LastRow, 1).Value = _ wb.Worksheets("sheet111").Cells(1, i + 4).Resize(LastRow, 1).Value Next wb.Close Set wb = Nothing Set xls = Nothing End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.3

> テンプレー.xlsmのsheet1のC1へペーストする--複数列ありま 複数列がどこを指すのか分からないのでF列をC列にコピーします。 Sub Test() Dim myFile As Variant Dim xls As New Excel.Application Dim wb As Workbook Dim LastRow As Long ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) LastRow = wb.Worksheets("Sheet1").Range("F1").End(xlDown).Row Workbooks("テンプレート.xlsm").Sheets("Sheet1").Range("C1").Resize(LastRow, 1).Value = _ wb.Worksheets("Sheet1").Range("F1").Resize(LastRow, 1).Value wb.Close Set wb = Nothing Set xls = Nothing End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

色々ありがとうございます。 言葉足らずですいません。 参照するsansho.xlsのsheet111のE1,F1,G1から最後の行までの各データを テンプレートのtempe.xlsのsheet888のA1,B1,C1から下へ個々にペーストしたいです。 基本的にマクロ記録で記録させてちょっと手直しをする程度の知識しかないため頂いたコードがシンプル過ぎて(コーピー、ペーストが無いことなど)驚き感激すると同時にに解析に苦労しています(^_^;) でも楽しいです!。(わかればもっと楽しいでしょうが) お手すきのときで構いません。 今一度おねがいします。m(__)m

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.2

No1で時間がかかるようでしたら ExecuteExcel4Macroの方で Sub Test2() Dim myFile As Variant Dim strDir As String Dim strFile As String ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else strDir = Left(myFile, InStrRev(myFile, "\")) strFile = Mid(myFile, InStrRev(myFile, "\") + 1) Workbooks("テンプレート.xlsm").Sheets("Sheet1").Cells(2, 1) = ExecuteExcel4Macro("'" & strDir & "[" & strFile & "]Sheet1'!R1C1") End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

ありがとうございます! 帰ったら試してみます!

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.1

[ファイルを開く]ダイアログボックスを表示する(GetOpenFilenameメソッド) https://www.moug.net/tech/exvba/0060013.html ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application) https://excel-ubara.com/excelvba5/EXCELVBA242.html を参考にして Sub Test() Dim myFile As Variant Dim strFile As String Dim xls As New Excel.Application Dim wb As Workbook ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) Workbooks("テンプレート.xlsm").Sheets("Sheet1").Cells(2, 1) = wb.Worksheets("Sheet1").Range("A1") wb.Close Set wb = Nothing End If End Sub としたら開いている テンプレート.xlsmにデータが転記できますので試してみてください。 テンプレート.xlsmを開くコードは入ってないので適当なところに入れ込んでください。

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

お世話になります 昨日今日といろいろ試してみていますが、よくわからず( ノД`)シクシク…  自分で自動で登録した下記のマクロを教えていただいたマクロへ組み込みたいのですがどう入れていいのかわかりません。 Range("F1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("Sheet1").Select "テンプレー.xlsmのsheet1のC1へペーストする--複数列あります) Range("C1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False よろしくお願いできますでしょうか?

関連するQ&A

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • excel等のコピーやブック等の基本知りたいです

    コピーやブック等の概念等ががわかりません わかりやすい書籍、ホームページ等をご紹介いただければ幸いです 以下、コピー(ブックの概念等その他も)の概念がわからず困った時の例です マクロを記録してコピーしようとしました 隣のシートに表をコピーをして、ある式を任意のセルにペースト、計算を行う というもので、違うbookにこのマクロをペーストすると、マクロを記録した時に作ったシートに再計算がされるだけ また、違うbookに形式を選んでペーストを行おうとしても、数式や値ではなく、ビットマップやワークシートになってしまう 等です。VBAの勉強をすれば解決するのではないかと勉強を始めようと思っていますが、コピーの概念($の使い方なども)など勉強したいです。 詳しい書籍、ホームページを紹介していただければ幸いです。

  • エクセルで、別Bookの同じデータを自動的にコピーする

    自分で考え解決できるほどのスキルが無いので、ここをよく利用しています。皆さんよろしくお願いしますm(_ _)m エクセルです。2つのBookがあります。それぞれにデータ(文字)が入っていますが、その一部を自動的にBook2から Book1にコピーしたいのです。 ★☆★ Book1のあるセルのデーター(文字)と同じデータが入っている、Book2のセルと同じ行で別の列にあるデーターを、 Book1のデータと同じ行で別の列にコピーしたい。 ★☆★ このような事が、自動的に出来るんでしょうか? ちなみに、マクロは・・・私には難しいですm(_ _)m

  • 複数ブックから指定のデータを抽出してリストにしたい

    VBAで複数のブックから指定のデータを抽出してリストを作りたいです。 ・地域ごとに分かれたブックが複数あります。(全て同一フォルダ内、リストも同フォルダに作ります) ・シートの構成は「原本」「一覧」「商品名A」「商品名B」(※5~20シート位) ・商品は月替わりで増減がある。 「一覧」…商品名のシートから月の販売個数を集計した物を一覧表にしてあります。      必ず各ブックの2枚目のシートになります。 ・各地域のブックから「一覧」のシートを参照して「商品名」「メーカー」「合計」を抽出する。 ・リストには地域別でメーカー毎に一覧を表示したい。 別ブックの特定のセルを参照して一覧にするのは簡単なのですが、商品が毎月増減します。 なので各地域別のブックを更新したら、リストの方も自動的に反映されるようにしたいのです。 色々検索してみて各ブックの指定のシート、指定のセルからマクロで自動的に読み込むというのは見つかりましたが、セルの範囲が一定ではない場合はどうすれば良いのか解りません。 出来ればリスト以外のブックは開かずにデータを抽出したいです。 (※実際に入力作業を行うスタッフは本当に入力しか出来ないので、このブックを先に開いて~とかは混乱して出来ないようです。マクロで全てのファイルを開く等も勝手に閉じてしまったりするので避けたいです。)

  • コピーするExcelマクロを作りたいです(2)

    「コピー元」ブックから「コピー先」ブックにコピー&ペーストを 行うマクロを作りたいのですが、列の計算が複雑で困っています。 Excelブックのキャプチャ画像を加えて再投稿します。 画像ではシートになっていますが、画面左のシートのような表から 右のシートの当てはまるセルにデータを写すようにお考えください。 「コピー元」ブックは月に一度ダウンロードするデータで、ピボット テーブルです。一月ごとに、前月の列が各営業所ごとに増えていき ます。行には、商品ごとの売上げが入力されています。 また、各営業所ごとに、年度合計列があります。(営業所の数は10 前後、商品の行は50以上はあります。) 「コピー先」ブックは、あらかじめ年度末までの行列セル、合計列が 用意されていて、「コピー元」ブックからデータを移動してくるのみ でレポートとして毎月提出する体裁です。 単純にコピーするだけならばよいのですが、毎月各営業所一列ずつ 増えていくというのが式にして表せません・・・また、できる限り 数値の変更を最低限にして、毎年度利用できるマクロにするという 希望もあります。 ご面倒かと思いますが、お力を貸してください。

  • マクロで他ブックを開きデータを取得する方法について

    BOOK1は集計表でシートは1枚です。BOOK2はデータ入力シートで50位のシートが含まれています。 BOOK1からマクロでBOOK2を開き、各シートにあるデータをBOOK1(集計表)の所定のセルへ表示させようと考えています。例えば「BOOK2のSheet2のセルC6のデータをBOOK1のセルF8へ、Sheet3のセルC6のデータをBOOK1のセルF12へというように順次50枚のシートに入力した各データをBOOK1の集計表に表示させる予定です。どのようなマクロ構文にしたら良いのでしょうか? ご教授よろしくお願いします。

  • Excel 同ブックの他シートを参照するセルを、他ブックのセルにコピー

    こんにちは。Excelの使い方について質問させていただきます。 よろしくお願いします。 Excel2003を使っています。 シート数、シート名がまったく同じブックが2つあります。 AブックのAシートのA1セルを参照しているセルである AブックのBシートのA1セルをコピーします。 BブックのBシートのA1セルにペーストします。 BブックのAシートのA1セルを参照して欲しいのですが、 別ブックであるAブックのAシートのA1セルを参照するように 自動的に変換されてしまいます。 シンプルにそのままコピーすることは不可能でしょうか。 セルのコピーでは無く、中の文字列を選択してコピーしても、 何が起こっているのかよくわかりませんが上手くいきません。 Excel初心者です。マクロはまったく使えません。 親切な方、どうぞよろしくお願いします。

  • エクセル マクロで別のブックに貼り付けたい!

    作成したシートを別のブック(既存)にマクロを使って貼り付けたい のですが、いろいろ調べた結果以下のようにはすることができました。 ---------------------------------------------------------------- Sub SaveSheet() Dim sFileName As String 'ファイル名の設定 sFileName = "C:\a\test.xls" 'シートをコピーして新規ブックを作成 Sheets(Array("Sheet1", "Sheet2")).Copy '作成したブックの保存 ActiveWorkbook.SaveAs sFileName End Sub ---------------------------------------------------------------- これはとあるサイトで見つけたもので、私自身が作成したものでは ありません。 このマクロの問題は、 ○あらたにブック(シート)が作成されること (マクロ実行時は上書きになるので、変更できなくても使えないわけ ではない) ○元データはシート丸ごとであり、セル範囲を選択できない。 ○貼り付けるシートにおいても、任意の場所を起点とできない。 ということです。 整理しますと、『作成したシートの任意のセル範囲を、別に存在する ブックに、任意のセルを起点として貼り付けたい』 ということです。 どうかよろしくお願いします。m(_ _)m

  • 複数のブックのデーターをひとつにできますか?

    複数のブックにシートが1個づつ、中は同じ種類のタイトルデータ、記号やコメント文章、同じなんですが、これらのブックを新しいブックのシートに指定したブックの順番にデーターが、繋ぎ合わさせることって、できるのでしょうか? たとえば、50個づつのデータが入っているファイルが10個あるとすれば、 新しい11個めのエクセルファイルのシートにデータが500個となる。 こんなことって出来ますか? できるとすれば、マクロという方法ですか? 難しいでしょうか? マクロを書いてくれるようなサービスはないでしょうか? 有るとすれば、どのような単語で検索すれば、マクロを作ってくれるサイトが見つかるでしょうか?

  • excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存

    マクロの初心者ですが、どうか教えてください。 テンプレートブックを名前を付けて保存するマクロで 苦戦しております。  ・ダイアログを必ず開く  ・その時の保存先はz:\あああ  ・ブック名はアクティブシートの任意のセルA1 --------------------------------------------- Application.Dialogs(xlDialogSaveAs).Show _ Arg1:=Range("A1").Value ここまではたどり着けたのですが、ダイアログが 当初のテンプレートブックの保存場所が開いてしまいます。 どうぞよろしくお願いいたします。