プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBA独学中の超初心者です。
VBAを利用して以下のことがしたいのですが、わかりません。
助けて下さい。よろしくお願いいたします。

1. ファイルを選択する。
2. 1で選択したファイルから、シート名を選択する
3. 2で選択したシートを現在のブックのSheet1にコピーする

A 回答 (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
    • good
    • 2
この回答へのお礼

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

お礼日時:2005/04/05 14:40

たぶん質問者さんは、次のことをしたいという事だと思いました。


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にコピー(挿入)してください。
    • good
    • 3

>1.ファイルの選択


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています