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

回答編集履歴

2

補足追加

2018/06/27 07:08

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -28,4 +28,35 @@
28
28
  .Quit 'Excel終了
29
29
  Set EE = Nothing '参照開放
30
30
  End With
31
+ ```
32
+
33
+ 補足
34
+ ---
35
+ 質問の回答ではなく、改善のアドバイスです。
36
+ ExcelオブジェクトをRecordsetのレコード数分、生成したり解放したりしてますが、無駄ですね。重くなるだけです。ループ前に一回生成して、ループを抜けてから解放すればOKです。
37
+
38
+ ```vba
39
+ '略
40
+ Dim wb As Object 'Workbook
41
+ '略
42
+
43
+ Set EE = CreateObject("Excel.Application")
44
+ '本番はfalse
45
+ EE.Visible = True
46
+ EE.ScreenUpdating = True
47
+
48
+ Do Until RS1.EOF
49
+
50
+ Set wb = EE.Workbooks.Add '新規ブックを追加
51
+
52
+ '略
53
+
54
+ WB.SaveAs "J:\シミュレート表_2018\" & Q_N & ".xlsx"
55
+ WB.Close 'ブックを閉じる
56
+
57
+ rs1.Movenext
58
+ Loop
59
+
60
+ EE.Quit 'Excel終了
61
+ Set EE = Nothing '参照開放
31
62
  ```

1

コードの修正

2018/06/27 07:08

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,17 +1,30 @@
1
1
  ```vba
2
2
  With EE
3
+ .ScreenUpdating = True
4
+ .Workbooks.Add
5
+ End With
6
+ '中略
7
+ With EE
3
8
  .Save
4
9
  EE.SaveAs "J:\シミュレート表_2018\" & Q_N & ".xlsx"
5
10
  EE.Quit 'Excel終了
6
11
  Set EE = Nothing '参照開放
7
12
  End With
8
13
  ```
14
+ EE(Excelオプジェクト)は保存できないのでエラーになるのですね。
15
+ 新規ブックを名前を付けて保存するようにしましょう。
9
- .Save は上書き保存なので新規ブックではエラーになので、ここエラーになっているのでは?
16
+ .Save は上書き保存なので新規ブックではエラーになりますので、.SaveAs
10
- 下記でいいと思いますが。
11
17
 
12
18
  ```vba
19
+ Dim wb As Workbook
13
20
  With EE
21
+ .ScreenUpdating = True
22
+ Set wb = .Workbooks.Add
23
+ End With
24
+ '中略
25
+ With EE
14
- .SaveAs "J:\シミュレート表_2018\" & Q_N & ".xlsx"
26
+ WB.SaveAs "J:\シミュレート表_2018\" & Q_N & ".xlsx"
27
+ WB.Close
15
28
  .Quit 'Excel終了
16
29
  Set EE = Nothing '参照開放
17
30
  End With