• 締切済み

エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい

エクセルVBA独学中の超初心者です。 VBAを利用して以下のことがしたいのですが、わかりません。 助けて下さい。よろしくお願いいたします。 1. ファイルを選択する。 2. 1で選択したファイルから、シート名を選択する 3. 2で選択したシートを現在のブックのSheet1にコピーする

みんなの回答

回答No.3

ごめんなさい。 No.2でウソついちゃいましたm(_ _)m EXCEL VBAにはファイルの選択ダイアログを表示して選択したファイルを開いてくれるメソッドがありました。 Application.FindFile で、開かれたBookを捕まえるには Set xlBook = Application.ActiveWorkbook あとはNo.2と同様で。 それと、ファイルの選択ダイアログでキャンセルしたかどうかはApplicatio.FindFileの戻り値がBooleanで返るのでFalseの時はキャンセルされたとして処理しないようにすれば良いでしょう。 説明下手なんで、ソース書きます。 Private Sub Command1_Click() Dim ret As Boolean Dim xlBook As Workbook Dim xlSheet As Worksheet 'ファイル選択 ret = Application.FindFile 'Falseだったらキャンセルされたので処理中止 If Not ret Then Exit Sub '開いたBookを捕まえる Set xlBook = Application.ActiveWorkbook 'この下にシート一覧を表示する処理を書く。 End Sub

nekoneko705
質問者

お礼

お答えいただいたまま、ずっと連絡せずにすみません。 パソコンが死んでおりました。。。 超初心者の私にでも、非常にわかりやすいお答えをありがとうございました。またよろしくお願いいたします。

回答No.2

たぶん質問者さんは、次のことをしたいという事だと思いました。 1.ファイルを開くダイアログを表示して実行時にEXCELファイルを選択する。 2.ダイアログで1で選択したEXCELが持つシートの一覧を表示して、その中からユーザがシートを選択する。 3.2で選択したシートを現在のブックのシート1にコピーする。(え?コピー?既に存在するシートに内容をコピーじゃなきゃダメ?) 1.はVBAの場合は標準では多分ムリ。 APIを使う事になると思います。 「GetOpenFileName」 というAPIの使い方を調べて下さい。 2は、 Dim xlBook As WorkBook set xlBook = WorkBooks.Open(1で選択したファイルパス) Dim xlSheet as WorkSheet Combo1.Clear For Each xlSheet In xlBook.WorkSheets Combo1.AddItem xlSheet.Name Next でコンボボックスCombo1にシート名が全部入ります。 ユーザに選んでもらいましょう。 お好みでコンボボックスじゃなくてリストボックスでも可。 その後、OKボタンを押したタイミングか何かで、 No1の方が3で説明されているように現在のBookにコピー(挿入)してください。

回答No.1

>1.ファイルの選択  Workbooks.Open FileName="C:??????"  上のようにして、ファイルを開くことが出来ます。  注意点として、ファイル名はフルパス(ドライブ名:フォルダー名、ファイル名)で、指定しなければなりません。エクスプローラーで読み込もうとするファイルを選択し、プロパティーを表示させると 場所:にドライブ名とフォルダー名が表示されますので、これをコピーしファイル名を "\****.xls"と指定します。 >2.シート名を選択する  Sheets("シート名").Activate  で、シートを選択します。 >3.現在のブックのSheet1にコピーする。  ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1)  で、コピー出来ますが、Sheet1にコピーされるのではなく、Sheet1の前にシートを挿入する形になります。  この後、ファイルを閉じて、現在のブックをアクティブにします。アクティブにしないで終わると、うまくいかなかったと思います。 ActiveWorkbooks.close Thisworkbook.Activate

関連するQ&A

  • vba ブック間でシート名のコピーをするには

    始めまして、よろしくお願いします。 excel vba 初心者のものです。 2つのブックがあり同時に開いている状態です。1つのブックはデータがあります。 もう1つは空のブックです。 データのあるブックのシートには、 シート1のシート名は「8月1日」 シート2のシート名は「8月2日」 シート3のシート名は「8月4日」 シート4のシート名は「8月5日」 シート5のシート名は「Sheet1」 やりたいこと データ、シート名があるブックから、 空ブックのシートにシート名をコピーしてきてセルに貼り付けたいです。 シートに名前を付けてるシート数は不規則なので「Sheet1」まで来たら終了したいです。 どうぞご教授の程よろしくお願い申し上げます。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセルVBAでブック間のコピーをしたい。

    エクセルVBAでブック間のコピーをしたい。 エクセルのVBA初心者です。 複数のブックが開いている時(ブックA,B,C...)に、今選択しているブックAのあるセルを、直前に選んでいたブックBやC(そのつど変わります)にコピーする方法は有りますでしょうか? どなたか教えて下さい。

  • エクセルVBAでブックを開きたいのですが、

    エクセルVBAでブックを開きたいのですが、 アクティブシートを別のブックに移動させたいのですが、 まず、目的のブックを開く → 移動させたいシート名を右クリック → 移動またはコピー を選択 → 移動先ブック を選択  というふうにしようと思っていますが、 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUMIKO\My Documents\YYYY.xls" のようにファイル名を入れると開くことができました。 が、   Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\Range("F1").Value.xls" のように、アクティブシートの セルF1にファイル名を入れて、開きたいのですが、どうしても開くことができません。いろいろ調べて試しましたが、無理でした。 基本的にマクロで記録で作っている初心者です。 回答よろしくお願いします。

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • エクセルのファイルに他のファイルのシートをコピーしたい

    エクセルのファイル A に10個のシートがあり、又ファイル Bに5個のシートがあるのですが、 ファイル A のシートを 2個 ファイル Bに移したいのです。うまくコピーできません。 コピーしたいエクセルシート名をクリックして、シートの移動またはコピーを選択しても、新しいブックか現在のファイル名しか表示されません。簡単な編集からコピーをしても貼り付ける時、テキストでの貼り付けになり、元のまま貼り付けが出来ません。

  • excel vba シートがなければコピーしたい

    excel vba で教えてください sheet名0を雛形に、使用者が1 2 3のsheet名でコピーして利用できるようにしたい。1はあるのでコピーを作らない。2はないのでsheet名0をコピーして作るといったように現在sheet2があるや否やで作成するや否やを判断してsheet copyをしたい。 すべてのsheet を名前をしらべつつ判断したいのです 教えてください

  • エクセル(VBA)のブック間でのコピーペーストについて

    こんにちは。VBA入門レベルのものですが、質問させてください。 ブックAとブックBを開いた状態にし、 ・ブックA⇒VBAを組む&データ貼付け先 ・ブックB⇒データコピー元 ブックBの特定セル(例:D10)からブックAの特定セル(例:E12)にコピー⇒貼付 する方法を探しています。 なお、ブックBは、ブック名とシート名が都度変わるので、「ブックAではない方の開いているエクセルファイルからデータをコピーし、ブックAに貼付ける」の構文にしたいです。 また、コピペの他に数式(イコール)で飛ぶ方式でもかまいません。 この内容でのVBAの記述方法が分かる方、どなたか教えて頂けますでしょうか。 すみませんがよろしくお願いいたします。 ※エクセル2003です。

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • エクセルのVBAで、異なるブック間でのコピー&ペースト

    こんばんは。 エクセルのVBAで、異なるブック間でのコピー&ペーストに関しての質問です。 現在アクティブになっているシートのB4セルをコピーして、 現在開いているシートのブックとは異なる特定の ブック(”Book1")の特定のシート(”Sheet1”)のC5セルに貼り付けたい場合、 ●●●の部分に何と表現すればよいか教えてください。 Range("B4").Copy Destination:=●●● よろしくお願いいたします。

専門家に質問してみよう