- ベストアンサー
Excel VBAで違うExcelファイルの指定したシートを開く処理を試してみよう!
- Excel VBAで違うExcelファイルの指定したシートを開く方法について詳しく教えてください。
- また、指定したシートを現在のブックにコピーする方法も知りたいです。お手数ですが、ご教示ください。
- 問題の箇所は、「ここでしょうか?.Sheet()」と指定してもうまくいかないという部分です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >エラーの内容は、 実行時エラー'1004'; >「アプリケーションの定義またはオブジェクト定義のエラーです。」 というのは、 With Workbooks.Open(Filename:=fnames) '****************** .Worksheets(1).Select '指定する 'ボタンのあるシートにコピーする .Worksheets(1).Cells.Copy ThisWorkbook.ActiveSheet.Range("A1") 'ボタンのあるシートに戻る Application.Goto ThisWorkbook.ActiveSheet.Range("A1") End With の ******* の部分に何か入って、アクティブブックが、「Workbooks.Open(Filename:=fnames)」と開いたブックでない場合に、そのような文言のエラーが発生します。 もし、必要とあれば、この2行をセットに使ってください。 .Activate .Worksheets(1).Select '指定する コピーするだけなら、単に、このコードだけで足ります。 .Activate さえ必要ありません。 .Worksheets(1).Cells.Copy ThisWorkbook.ActiveSheet.Range("A1")
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >指定する事が出来たら With ステートメントを使います。シートを指定しないのなら、その開いたブックのActiveSheet になります。選ぶなら、InputBox 関数やメソッドを用いて、選ばせます。 Copy は、Cells と、シート全体を取得しています。 Sub FILE_OPEN8() Dim fnames As String fnames = fnames1 With Workbooks.Open(Filename:=fnames) .Worksheets(1).Select '指定する 'ボタンのあるシートにコピーする .Worksheets(1).Cells.Copy ThisWorkbook.ActiveSheet.Range("A1") 'ボタンのあるシートに戻る Application.Goto ThisWorkbook.ActiveSheet.Range("A1") End With End Sub なお、通常、MsgBox のYes/No は、こんな書き方をします。 Private Sub CB1_Click() If MsgBox("データ展開する?", vbYesNo, "データ展開?") = vbYes Then Call IMPORT.FILE_OPEN1 End If End Sub
お礼
ありがとうございます。 早速コードを変更してトライしてみたのですが、 下記でどうしてもエラーがでます。 With Workbooks.Open(Filename:=fnames) .Worksheets(1).Select '指定する *ここでエラー* End With どうしたらよろしいでしょうか? MsgBoxの件ありがとうございました。 すぐに変更いたしました!
補足
エラーの内容は、 「アプリケーションの定義またはオブジェクト定義のエラーです。」 と出ます。 使用しているのはPersonal Edition のExcel2003です。
お礼
出来ました! 丁寧なご指導ありがとうございました!