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

質問編集履歴

6

コード修正

2018/07/03 07:53

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
@@ -67,9 +67,13 @@
67
67
      ’複数の仕入先を処理することがあるため、A1列に会社名をセットし、Do~Loop処理を行います
68
68
 
69
69
  EE.Run "シミュ_Macro"
70
+ ↓追記
71
+ EE.Application.DisplayAlarts = False
72
+ EE.Quit
70
73
 
71
74
  Set wb = Nothing
72
75
  Set EE = Nothing
76
+
73
77
 
74
78
  MsgBox "END"
75
79
 

5

コード編集

2018/07/03 07:53

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
@@ -78,6 +78,25 @@
78
78
  ```
79
79
  ```
80
80
  Excelマクロ
81
+ Dim LCNT As Long
82
+ Dim LCNT1 As Long
83
+ Dim LCNT2 As Long
84
+ Dim LCNT3 As Long
85
+ Dim LCNT4 As Long
86
+ Dim M_NAME
87
+ Dim F_NAME
88
+ Dim HIRAITA_F As String
89
+ Dim IDX1 As Integer
90
+ Dim RA, RB, RC
91
+ Dim YMD
92
+ Dim WS As Object
93
+ Dim WN(3) As String
94
+ Dim Bar
95
+ Dim PT
96
+ Dim MM
97
+ Dim NENGETU As String
98
+ Dim i As Integer
99
+ Dim wb As Workbook
81
100
 
82
101
  Do
83
102
  Workbooks(M_NAME).Activate

4

コードの編集

2018/07/03 07:46

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
@@ -8,8 +8,8 @@
8
8
  Dim RR As Integer 'ROW
9
9
  Dim CC As Integer 'Cell
10
10
  Dim EE As Object
11
- Dim wb As Workbook
11
+ Dim wb As Object
12
- Dim ws As Worksheet
12
+ Dim ws As Object
13
13
  Dim i As Integer
14
14
  Dim idx1 As Integer, idx2 As Integer
15
15
  Dim CNT1 As Integer, CNT2 As Integer

3

アイコン追加

2018/07/03 07:43

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
File without changes

2

追記

2018/07/03 07:00

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
@@ -75,4 +75,45 @@
75
75
 
76
76
  End Sub
77
77
 
78
- ```
78
+ ```
79
+ ```
80
+ Excelマクロ
81
+
82
+ Do
83
+ Workbooks(M_NAME).Activate
84
+ l_cnt = l_cnt + 1
85
+ MM = Range("B" & l_cnt)
86
+
87
+ If MM = "" Then
88
+ Exit Do
89
+ End If
90
+
91
+ LCNT1 = 1
92
+
93
+ Workbooks(M_NAME).Activate
94
+
95
+        //省略// 製表処理しています。
96
+      loop
97
+ '閉じるときにAB列の値を消す
98
+ Range("A1:B21").Select
99
+ Selection.ClearContents
100
+
101
+ ’開いているExcelを保存して閉じる
102
+ For Each wb In Workbooks
103
+ If Not wb Is ThisWorkbook Then
104
+ wb.Close SaveChanges:=True
105
+ End If
106
+ Next wb
107
+   ’Excelファイル『Macro』を閉じる
108
+ ThisWorkbook.Save
109
+ ```
110
+ ここまでの処理を、teratailで質問させていただき何とか作成することが出来ました。
111
+
112
+ ここで困っていることはきちんと任意の選択した仕入先のファイルが作成され、製表を出来てきちんと保存されているのですが、
113
+ さて確認してみようと思うと、なぜか作成されたファイルだけ起動しているのに『Macro』ファイルも一緒に立ち上がってしまいます。
114
+ そしてACCESSでもう一度処理を行おうとするとずっと実行中(フリーズ?)した状態になってしまします。
115
+
116
+ 処理が終わって『END』が表示されるようにしたので処理が終わった後にタスクマネジャーで確認したところ、Excelは起動していませんでした。
117
+
118
+ Excel『Macro』がきちんと終了できていないということでしょうか??
119
+ ご教示お願い致します。

1

追記途中です

2018/07/03 06:47

投稿

napoleon
napoleon

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ACCESSからデータを起こし、Excelマクロと連携し製表するまでの処理を行っています。
2
2
 
3
3
  ```ここに言語を入力
4
+ ACCESSのコード
4
5
  Private Sub Export_Click()
5
6
 
6
7
  Dim RS1 As Recordset, RS2 As Recordset
@@ -27,14 +28,10 @@
27
28
  For idx1 = 1 To 21
28
29
    省略(選択した取引先の処理を繰り返しています)
29
30
  Next
31
+
32
+     ’RS1でセットした内容をExcelにはきだします
30
33
 
31
- Set RS1 = DB.OpenRecordset("SELECT M_仕入先会社マスタ.仕入先コード,M_仕入先会社マスタ.会社名 FROM M_仕入先会社マスタ WHERE (((M_仕入先会社マスタ.[CHK])=-1));")
32
-
33
- CNT1 = 0
34
- CNT2 = 0
35
-
36
- Do Until RS1.EOF
34
+     Do Until RS1.EOF
37
-
38
35
  Set EE = CreateObject("Excel.Application")
39
36
  '本番はfalse
40
37
  EE.Visible = False
@@ -44,47 +41,10 @@
44
41
  Set wb = .Workbooks.Add
45
42
  Set ws = wb.Sheets("Sheet1")
46
43
  End With
47
-
48
- For idx2 = 1 To 4
49
-
50
-
51
- Set RS2 = DB.OpenRecordset("SELECT Q_シミュレート_" & idx2 & ".* FROM Q_シミュレート_" & idx2 & " WHERE (((Q_シミュレート_" & idx2 & ".仕入先コード)='" & RS1!仕入先コード & "'));")
52
-
53
- Q_N = RS2!会社名
54
-
55
- If idx2 = 1 Then
56
- CNT1 = DCount("*", "Q_シミュレート_" & idx2 & "", "仕入先コード = '" & RS2!仕入先コード & "'")
57
- 'フィールド名の書き出し
44
+   //省略//
58
- For i = 0 To RS2.Fields.Count - 1
59
-
60
- ws.Cells(1, i + 1).Value = RS2.Fields(i).Name
61
- 'ActiveSheet.Cells(1, i + 1).Value = RS2.Fields(i).Name
62
- Next i
63
- 'CopyFromRecordsetメソッドで基準セルを指定してデータの書き出し
64
- ws.Range("A2").CopyFromRecordset RS2
65
- 'ActiveSheet.Range("A2").CopyFromRecordset RS2
66
-
67
- CNT1 = CNT1 + 2
68
- CNT2 = CNT1
69
-
70
- Else
71
-
72
- For i = 0 To RS2.Fields.Count - 1
73
- ws.Cells(CNT2 + 1, i + 1).Value = RS2.Fields(i).Name
74
- 'ActiveSheet.Cells(CNT2 + 1, i + 1).Value = RS2.Fields(i).Name
75
- Next i
76
- 'CopyFromRecordsetメソッドで基準セルを指定してデータの書き出し
77
- ws.Range("A" & CNT2 + 2).CopyFromRecordset RS2
78
-
79
- CNT2 = CNT2 + CNT1
80
-
81
- End If
82
-
83
- Next
84
45
 
85
46
  With EE
86
-
87
- wb.SaveAs "J:\◆購買部\共通\シミュレート表\シミュレート表_2018\" & Q_N & Left(Me!YMD, 4) & Mid(Me!YMD, 6, 2) & Right(Me!YMD, 2) & ".xlsx"
47
+ wb.SaveAs "J:\シミュレート表_2018\" & Q_N & ".xlsx"
88
48
  wb.Close
89
49
  .Quit 'Excel終了
90
50
  Set EE = Nothing '参照開放
@@ -96,44 +56,23 @@
96
56
  RS1.MoveNext
97
57
  Loop
98
58
 
99
- '''Macroへの書き出し'''''''''''
100
-
101
- Set myQuery = DB.QueryDefs("Q_出力会社")
102
- strSQL = myQuery.SQL
103
- myQuery.SQL = "SELECT M_仕入先会社マスタ.仕入先コード, M_仕入先会社マスタ.会社名 FROM M_仕入先会社マスタ WHERE (((M_仕入先会社マスタ.CHK)=-1));"
104
- myQuery.Close
105
-
106
-
107
- '''マクロ実行処理'''''''''''
59
+ //マクロ実行処理//
108
-
109
60
  Set EE = CreateObject("Excel.Application")
110
- '本番はfalse
111
61
  EE.Visible = False
112
62
  EE.UserControl = False
113
-
114
- Set RS1 = DB.OpenRecordset("SELECT M_仕入先会社マスタ.仕入先コード,M_仕入先会社マスタ.会社名 FROM M_仕入先会社マスタ WHERE (((M_仕入先会社マスタ.[CHK])=-1));")
115
63
 
64
+ ’同じフォルダに『Macro』というファイルをセットし、そこから実行しています
116
- Set wb = EE.Workbooks.Open("J:\◆購買部\共通\シミュレート表\シミュレート表_2018\Macro.xlsm")
65
+     Set wb = EE.Workbooks.Open("J:\シミュレート表_2018\Macro.xlsm")
117
66
  Set ws = wb.Sheets("Sheet1")
118
- ws.Range("A1").CopyFromRecordset RS1
67
+     ’複数の仕入先を処理することがあるため、A1列に会社名をセットし、Do~Loop処理を行います
119
68
 
120
69
  EE.Run "シミュ_Macro"
121
70
 
122
71
  Set wb = Nothing
123
72
  Set EE = Nothing
124
73
 
125
- 'wb.Close
126
- 'EE.Quit
127
-
128
-
129
- 'M_仕入先会社マスタのCHKをnullにする処理
130
-
131
- DoCmd.SetWarnings False
132
- DoCmd.OpenQuery ("Q_CHK_Clear")
133
- DoCmd.SetWarnings True
134
-
135
74
  MsgBox "END"
136
75
 
137
76
  End Sub
138
- コード
77
+
139
78
  ```