Option Explicit
Sub FileExists()
Dim fs As Scripting.FileSystemObject
Dim fname, st As String
Dim c As Long
Dim wb As Workbook
Debug.Print Now & "開始"
Set fs = CreateObject("Scripting.FileSystemObject")
Application.DisplayAlerts = False
Workbooks("syuukei").Worksheets("Sheet1").Range("A1").ClearContents
For c = 1 To 5
fname = ThisWorkbook.Path & "\siken\" & c & ".xlsm"
If fs.FileExists(filespec:=fname) Then
Workbooks.Open filename:=fname
Set wb = ActiveWorkbook
st = st & wb.Worksheets("Sheet1").Range("A1").Value
wb.Close
End If
Next
Workbooks("syuukei").Worksheets("Sheet1").Range("A1").Value = st
Application.DisplayAlerts = False
Set fs = Nothing
Debug.Print Now & "終了"
End Sub
Option Explicit
> Sub FileExists()
> Dim fs As Scripting.FileSystemObject
> Dim fname, st As String
> Dim c As Long
> Dim wb As Workbook
> Debug.Print Now & "開始"
> Set fs = CreateObject("Scripting.FileSystemObject")
> Application.DisplayAlerts = False
> Workbooks("syuukei").Worksheets("Sheet1").Range("A1").ClearContents
> For c = 1 To 5
> fname = ThisWorkbook.Path & "\siken\" & c & ".xlsm"
> If fs.FileExists(filespec:=fname) Then
> Workbooks.Open filename:=fname
> Set wb = ActiveWorkbook
> st = st & wb.Worksheets("Sheet1").Range("A1").Value
> wb.Close
> End If
> Next
> Workbooks("syuukei").Worksheets("Sheet1").Range("A1").Value = st
> Application.DisplayAlerts = False
> Set fs = Nothing
> Debug.Print Now & "終了"
> End Sub
あじろうさんの投稿
(投稿ID: 3891) 添付ファイルのダウンロード権限がありません
処理時間について教えてもらいたいことがあります。
今迄、日ごとに分けたファイルから情報をあつめて集計しようと考えてます。
FileSystemObjectのサンプルコードを参考にして書いてみたコードがあります。
"siken"ファイルに"1.xlsm","3.xlsm""4.xlsm"3個が存在していて有無を確認した後、あったらSheet1の”A1”の値を "syuukei"シートに書き出す処理をしてみました。
僅か3個の処理で2~3秒かかってます。コードの描き方がいけないのでしょうか?それともこのくらいはかかるものでしょうか?うまく説明できずすいません。よろしくお願いします。
小川慶一さんのコメント
(コメントID: 5444)
ソース拝見しました。
これなら、一瞬で処理は終わるはずですけどね。
開けた先のファイルがよほど重たいとかですか?
その場合は、手作業でファイルを開いても時間がかかりそうですが。
> いつもお世話になっております。
> 処理時間について教えてもらいたいことがあります。
> 今迄、日ごとに分けたファイルから情報をあつめて集計しようと考えてます。
> FileSystemObjectのサンプルコードを参考にして書いてみたコードがあります。
> "siken"ファイルに"1.xlsm","3.xlsm""4.xlsm"3個が存在していて有無を確認した後、あったらSheet1の”A1”の値を "syuukei"シートに書き出す処理をしてみました。
> 僅か3個の処理で2~3秒かかってます。コードの描き方がいけないのでしょうか?それともこのくらいはかかるものでしょうか?うまく説明できずすいません。よろしくお願いします。
>
あじろうさんのコメント
(コメントID: 5454)
返信ありがとうございます。
いつも何気ない質問にお答えいただけるガラパゴスタディーに感謝です。
開くファイルは重たくはないと思います。
普通に考えれば処理速度はそれほど遅くはないのかもしれません。
基礎編から始めて長く勉強していくうちに良い意味で麻痺しているかもしれません。もう少し講座を進めていくうちに気付くこともあるかと思います。また、疑問に思うことがありましたら質問させていただきます。
ありがとうございます。
> あじろうさん:
>
> ソース拝見しました。
>
> これなら、一瞬で処理は終わるはずですけどね。
>
>
>
> 開けた先のファイルがよほど重たいとかですか?
> その場合は、手作業でファイルを開いても時間がかかりそうですが。
>
>
> > いつもお世話になっております。
> > 処理時間について教えてもらいたいことがあります。
> > 今迄、日ごとに分けたファイルから情報をあつめて集計しようと考えてます。
> > FileSystemObjectのサンプルコードを参考にして書いてみたコードがあります。
> > "siken"ファイルに"1.xlsm","3.xlsm""4.xlsm"3個が存在していて有無を確認した後、あったらSheet1の”A1”の値を "syuukei"シートに書き出す処理をしてみました。
> > 僅か3個の処理で2~3秒かかってます。コードの描き方がいけないのでしょうか?それともこのくらいはかかるものでしょうか?うまく説明できずすいません。よろしくお願いします。
> >
小川慶一さんのコメント
(コメントID: 5470)
試しに、エクセルのメニューから新規作成やファイルを作り、それに、(よけいな組織等の設定は行わず)数値や文字日付等の情報だけを入れたシートを作ってみてください。
そのようなファイルを複数作り、それらの中身を読み取るマクロを書いて実行してみてください。
その結果と今回書いたマクロでの実行結果等を比べれば何か分るでしょう。
> いつも何気ない質問にお答えいただけるガラパゴスタディーに感謝です。
教科書的な話だけをするのは簡単ですが、実務ではいろいろな課題がありますからね。
今後とも、まずは、お気軽にいろいろ聞いてみてください。