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

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

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

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

Q&A

解決済

2回答

1585閲覧

Dirで読み込んだファイル名を使用する方法

Naoko_Coco

総合スコア54

VBA

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

0グッド

0クリップ

投稿2019/06/12 07:27

編集2019/06/12 07:51

今回は複数のファイルの集計を行いたいと思ってます。
Dir関数でファイルネームはとれてるのですが、エラーが出ます。
エラーより先のコードがうまくいけるのかもは微妙なところではありますが。。。
よろしくお願いします。
しかもファイル名が1つしかとれてませんでした。
次のファイルを読み込んでませんでした。

実際のコード

Sub EntryOut() Dim File As String Dim FilePath As String Dim i As Long Dim r As Long Dim j As Long Dim rng As Range Dim wb As Workbook Dim sh As Worksheet Dim shTab As Worksheet Set wb = ThisWorkbook Set sh = wb.Sheets("出力") Set shTab = wb.Sheets("タブエントリー状況") File = Dir(shTab.Range("C1") & "*エントリーシート.xlsx") Do While File <> "" r = sh.Rows.End(xlDown).Row For i = 2 To r ' '開くExcelファイル FilePath = Dir(shTab.Range("C1") & "\" & File) 'ファイル名,項番 sh.Cells(i, 3) = File sh.Cells(i, 1) = File.ActiveSheet.Range("B10") 'エントリーページ j = 15 If File.ActiveSheet.Cells(j, 1) = "○" Then sh.Cells(i, 2).Value = File.ActiveSheet.Range(j, 12).Value End If   Next j Next i Loop End Sub

ファイル名はとれてます。

エラー内容

sh.Cells(i, 1) = File.ActiveSheet.Range("B10")の部分で
修飾仕が不正です。のエラーメッセージがでてしまいます。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Fileはstring型なのでActiveSheetプロパティが存在しないのではないでしょうか。
開いていないファイルの場合、先にWorkbooks.openなどでファイルを開きつつ、Workbookオブジェクトを取得する必要があるかと思います。


sh.Cells(i, 2).Value = File.ActiveSheet.Range(j, 12).Value の部分も、引数合ってるならRangeじゃなくてCellsな気がするのでコケそうです。

投稿2019/06/12 10:09

Eggpan

総合スコア2665

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

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

Naoko_Coco

2019/06/13 09:24

その通りです。RangeではなくCellsですね。 Openしてないから取れないんですね。やってみます。 またご報告します。
Naoko_Coco

2019/06/14 01:38

ありがとうございました。 できました。
guest

0

実行したわけではないのであくまで机上でバッグですが。。。
ActiveSheetの前のFileの指定は不要かと。3か所くらい?
あと、Next Jってありますがこれも不要では?
このあたり修正して動かしてみてもらっても良いでしょうか?

投稿2019/06/12 08:06

ktamon

総合スコア35

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

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

Naoko_Coco

2019/06/12 08:16

sh.Cells(i, 1)とFile.ActiveSheet.Range(j, 12).Valueは違うBookのSheetになります。 iはshの行数になりますが、File.ActiveSheet.Range(j, 12).は取得したBookになり、読み込む行が違うんです。
ktamon

2019/06/12 08:42

Aというフォルダに沢山エントリーシートが入っていてそれらをBというExcelにまとめたいんじゃないんですか?Fileの後ろにActive~は指定できないのでダメな気がします。 https://qiita.com/takahiro_itazuri/items/08754db91c6ab72deb03 が参考になると思いますが。。。
Naoko_Coco

2019/06/12 08:51

ありがとうございます。次のBookはとれるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問