質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

2012閲覧

別ブックの指定位置からDBのエクセルシートへコピーしたい

Task_0513

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/07/10 01:26

編集2022/01/12 10:55

前提・実現したいこと

ファイル名、シート名、データ量が作業毎に変わるエクセルファイルをツールの入っているエクセルシートに取り込みたい。
ファイル名とシート名は年度が入っているので毎年変わることは確定しています。

発生している問題・エラーメッセージ

シートをそのままVer1Bookにコピーしたいのですが、コピーした段階でエラーが発生してしまい動かなくなります。
シートの指定やブックの指定など変更して試していますがうまく動きません

実行時エラー”9” インデックスが有効範囲にありません。

該当のソースコード

VBA

1 2 3Sub データ取り込み2() 4 5 6 Application.DisplayAlerts = False ' メッセージを非表示 7 8 'Sheets2のデータを削除する 9 'Sheets(2).Delete 10 11 Dim OpenFileName As String, FileName As String 12 OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx") 13 If OpenFileName <> "False" Then 14 Workbooks.Open OpenFileName 15 16 17 '取り込むエクセルシートを開く 18 Workbooks("Microsoft Excelブック,*.xlsx").Sheets(1).Select.Copy _ 19 After:=Workbooks("Ver1.xlsm").Sheets(2) 20 21 FileName = Dir(OpenFileName) 22 23 Workbooks(FileName).Close 24 25 Sheets(1).Activate 26 27 Else 28 MsgBox "データ取り込みがキャンセルされました" 29 30 End If 31 32End Sub 33 34

試したこと

’Workbooks.Open OpenFileName  ’非表示に変更

Workbooks(OpenFileName).Sheets(1).Select.Copy _
After:=Workbooks("Ver1.xlsm").Sheets(2)

Workbooks("OpenFileName").Sheets(1).Select.Copy _
After:=Workbooks("Ver1.xlsm").Sheets(2)

Workbooks("Microsoft Excelブック,*.xlsx").Sheets(1).Select.Copy _
After:=Workbooks("Ver1.xlsm").Sheets(2)

と指定のブック名がいけないのかと繰り返していますがどれも有効範囲エラーが出ます。

補足情報(FW/ツールのバージョンなど)

Excel2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Ver1Book.xlsmに開いたBookの1つ目のシートをコピーする

VBA

1Dim OpenFileName As String, FileName As String 2OpenFileName = Application.GetOpenFileName("Microsoft Excelブック,*.xlsx") 3If OpenFileName <> "False" Then 4 Dim Wb As Workbook 5 Set Wb = Workbooks.Open(OpenFileName) 6 7 Wb.Sheets(1).Copy After:=ThisWorkbook.Sheets(1) 8 Wb.Close 9 Set Wb = Nothing 10Else 11 MsgBox "データ取り込みがキャンセルされました" 12End If 13ThisWorkbook.Sheets(1).Activate

投稿2020/07/16 06:51

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

取り消します。サンプルは誰かが修正してくれるでしょう。

投稿2020/07/11 00:14

編集2020/07/11 00:19
mako1972

総合スコア383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問