teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

間違えてた

2019/10/16 04:39

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -1,3 +1,42 @@
1
+ 最初の回答は忘れてください(忘れなくてもいいけど質問の本筋ではなかったです)
2
+
3
+ 2個しか選んでいないのに3個目を開こうとしたときにエラーになるって話ですね。
4
+ ループで処理しましょう。
5
+
6
+ ```VBA
7
+ Dim strFiles() As String
8
+ Dim i As Integer
9
+ Dim fileNum As Integer
10
+
11
+ With Application.FileDialog(msoFileDialogOpen)
12
+ .AllowMultiSelect = True
13
+
14
+ .Filters.Clear
15
+ .Filters.Add Description:="全てのファイル", Extensions:="*.*"
16
+
17
+ .Title = "ファイルを開く"
18
+
19
+ If Not .Show Then Exit Sub
20
+
21
+ fileNum = .SelectedItems.Count
22
+ ReDim strFiles(1 To fileNum)
23
+
24
+ For i = 1 To fileNum
25
+ strFiles(i) = .SelectedItems(i)
26
+ Next i
27
+
28
+ End With
29
+
30
+ '処理をするファイルを複数指定
31
+
32
+ For i = 1 To fileNum
33
+ Workbooks.Open strFiles(i)
34
+ '処理
35
+ Next
36
+ ```
37
+
38
+ 以下は最初の回答
39
+ ---
1
40
  配列に入れなおす必要性に関しては他の回答通り無駄な処理と思いますが、本件の問題は、いざ開こうと思ったらファイルがなかったときの対応方法と思います。
2
41
  仕様にもよるのですが、以下の3つの対応方法があると思います。
3
42
 

1

途切れ対策

2019/10/16 04:39

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -49,4 +49,5 @@
49
49
  End Sub
50
50
  ```
51
51
 
52
- 上記に挙げたのはあくまでもサンプルなので、あとはご自分のコードに適用してみてください。
52
+ 上記に挙げたのはあくまでもサンプルなので、あとはご自分のコードに適用してみてください。
53
+ .