Excel VBAで違うExcelファイルの指定したシートを開きたいのですが、
うまくいきません。現在のコードは、
*フォーム*
Private Sub CB1_Click()
Dim A As Integer
A = MsgBox("データ展開する?", 4, "データ展開?")
If A = 6 Then
INPORT.FILE_OPEN1
End If
End Sub
*INPORTモジュール*
Sub FILE_OPEN1()
FILE_OPEN8
End Sub
Sub FILE_OPEN8()
Dim fnames As String
fnames = fnames1
Workbooks.Open Filename:=fnames
***ここでしょうか?.Sheet("")と指定しても出来ません***
End Sub
Function fnames1() As Variant
fnames1 = Application.GetOpenFilename( _
Title:="ファイルを開く", _
FILEFILTER:="エクセルファイル (*.xls), *.xls")
If fnames1 = False Then
MsgBox ("ファイルを開けませんでした。" & Chr$(13) & _
"もう一度やり直して下さい。")
End
End If
End Function
また、指定する事が出来たら、選択したシートを現在のブックにコピーもしたいのですが、どの様にすればよいでしょうか?
よろしくお願いします。
No.1
- 回答日時:
こんにちは。
>指定する事が出来たら
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
この回答への補足
エラーの内容は、
「アプリケーションの定義またはオブジェクト定義のエラーです。」
と出ます。
使用しているのはPersonal Edition のExcel2003です。
ありがとうございます。
早速コードを変更してトライしてみたのですが、
下記でどうしてもエラーがでます。
With Workbooks.Open(Filename:=fnames)
.Worksheets(1).Select '指定する *ここでエラー*
End With
どうしたらよろしいでしょうか?
MsgBoxの件ありがとうございました。
すぐに変更いたしました!
No.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")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
別ブックをダイアログボックス...
-
エクセルのマクロについて教え...
-
エクセルのマクロを使ってメー...
-
【困っています2】VBA 追加処...
-
エクセルVBAが途中で止まります
-
マクロで最終行を取得したい
-
エクセルのマクロについて教え...
-
拡張メタファイルにて貼り付け
-
【ご教示ください】VBAの記述方...
-
ExcelのVBAです。フォルダ内の...
-
VBAで複数のブックを開かずに処...
-
EXCEL VBA 単語置き換え につい...
-
Excelのマクロコードについて教...
-
【マクロ】違うフォルダにある...
-
【ExcelVBA】インデックスが有...
-
vbaでvbaProjectのパスワード解...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBS Bookを閉じるコード
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
ExcelのVBAです。フォルダ内の...
-
vbaで他のブックに転記したい。...
-
フォルダ内の全てのファイルに...
-
VBAで複数のブックを開かずに処...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
VBA シート名が一致した場合の...
おすすめ情報