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

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

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

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

Q&A

解決済

4回答

951閲覧

Excel VBA 指定フォルダーのExcelファイルを全て開いてシートをコピー

mkdsk

総合スコア13

VBA

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

0グッド

0クリップ

投稿2019/08/08 00:54

編集2019/08/08 01:18

Excel VBA で指定フォルダーのExcelファイルを全て開いてシートをコピーさせようとしています
以下のコードですが、シートをコピーさせる「Sheets("SSS-0036-R12").Copy Before:=fl_name.Sheets(1)」で、つまづいています
エラーは修飾子が不正との事ですが、どのように直せば良いでしょうか?
回答よろしくお願い致します

VBA

1Sub 指定フォルダーのExcelファイルを全て開いてシートをコピー() 2 3 Const DIR_PATH = "C:\Users\user\Desktop" 4 Dim fl_name As String 5 6 fl_name = Dir(DIR_PATH & "*.xls*") 7 8 If fl_name = "" Then 9 MsgBox "Excelファイルがありません。" 10 Exit Sub 11 End If 12 13 Do 14 15 Workbooks.Open Filename:=DIR_PATH & "\" & fl_name 16 Workbooks("SSS-0036_R13_文書類表紙.xls").Activate 17 Sheets("SSS-0036-R12").Copy Before:=fl_name.Sheets(1) 18 fl_name = Dir 19 20 Loop Until fl_name = "" 21 22End Sub 23

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

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

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

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

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

guest

回答4

0

ベストアンサー

Sheets("SSS-0036-R12").Copy Before:=fl_name.Sheets(1)・・・・を
Sheets("SSS-0036-R12").Copy Before:=Workbooks(fl_name).Sheets(1)
にしてください。

openしたファイルをクローズしていませんが、それは今回は置いときます。

投稿2019/08/08 01:55

tatsu99

総合スコア5438

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

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

mkdsk

2019/08/08 02:08

丁寧な回答ありがとうございます 無事、解決しました なお、ファイルは開いた後、個別に編集したい事があるので良いのです
guest

0

Sheets("SSS-0036-R12").Copy Before:=flname.Sheets(1)

flname はString型なので単なる文字列です。文字列がSheetを持つはずがありません。

Sheets("SSS-0036-R12").Copy Before:=WorkBooks(fl_name).Sheets(1)

投稿2019/08/08 01:45

hatena19

総合スコア33715

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

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

mkdsk

2019/08/08 02:06

回答ありがとうございます
guest

0

Sheets("SSS-0036-R12").Copy Before:=fl_name.Sheets(1)

fl_name は文字列です。

操作するSheetのWorkbookを明示すればいいのではないでしょうか。
(コピー元もコピー先も)

投稿2019/08/08 01:49

garucia

総合スコア26

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

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

mkdsk

2019/08/08 02:07

回答ありがとうございます
guest

0

シートを末尾にコピーする構文は
Worksheets("Sheet1").Copy After := Worksheets(Worksheets.Count)です。

投稿2019/08/08 01:08

nanami12

総合スコア1015

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

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

mkdsk

2019/08/08 01:19

ご指摘ありがとうございます AfterをBeforeに変えました ただ、求めている回答はそこではないです
nanami12

2019/08/08 01:23

構文が違うのではと言ってます。
nanami12

2019/08/08 01:27

Sheets ではなく Worksheets
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問