回答編集履歴

2

バグ修正

2016/07/21 09:17

投稿

hihijiji
hihijiji

スコア4150

test CHANGED
@@ -48,13 +48,9 @@
48
48
 
49
49
  For count = 0 To numOfTimes
50
50
 
51
- With TARGET_APP
51
+ Application.Wait TimeSerial(Hour(myTime), Minute(myTime), Second(myTime) + waitingTime * count)
52
52
 
53
- .Wait TimeSerial(Hour(myTime), Minute(myTime), Second(myTime) + waitingTime * count)
54
-
55
- .Run procedureName
53
+     TARGET_APP.Run procedureName
56
-
57
- End With
58
54
 
59
55
  Next count
60
56
 

1

コード追記

2016/07/21 09:17

投稿

hihijiji
hihijiji

スコア4150

test CHANGED
@@ -5,3 +5,141 @@
5
5
  ・別のEXCELプロセスを起動して、その別プロセスから10秒毎に元のプロセスのプロシージャをコールする。
6
6
 
7
7
  など一工夫必要になります。
8
+
9
+
10
+
11
+ 以下追記しました。
12
+
13
+ --timer.xlsmの標準モジュール--
14
+
15
+ ```lang-vbscript
16
+
17
+ Option Explicit
18
+
19
+
20
+
21
+ Dim TARGET_APP As Application
22
+
23
+ Dim TARGET_BOOK As Workbook
24
+
25
+
26
+
27
+ Public Sub SetTarget(bookName As String)
28
+
29
+ Set TARGET_BOOK = GetObject(bookName)
30
+
31
+ Set TARGET_APP = TARGET_BOOK.Application
32
+
33
+ End Sub
34
+
35
+
36
+
37
+ Public Sub StartTimer(procedureName As String, numOfTimes As Long, waitingTime As Long)
38
+
39
+
40
+
41
+ Dim myTime As Date
42
+
43
+ myTime = Now()
44
+
45
+
46
+
47
+ Dim count As Long
48
+
49
+ For count = 0 To numOfTimes
50
+
51
+ With TARGET_APP
52
+
53
+ .Wait TimeSerial(Hour(myTime), Minute(myTime), Second(myTime) + waitingTime * count)
54
+
55
+ .Run procedureName
56
+
57
+ End With
58
+
59
+ Next count
60
+
61
+
62
+
63
+ End Sub
64
+
65
+ ```
66
+
67
+
68
+
69
+ --TextBook.xlsmの標準モジュール--
70
+
71
+ ```lang-vbscript
72
+
73
+ Option Explicit
74
+
75
+ Dim TIMER_BOOK As Workbook
76
+
77
+ Const TIMER_BOOK_FILENAME = "D:\timer.xlsm"
78
+
79
+
80
+
81
+ Public Sub Test()
82
+
83
+ Dim fso As Object
84
+
85
+ Set fso = CreateObject("Scripting.FileSystemObject")
86
+
87
+
88
+
89
+ Dim tmpFileName As String
90
+
91
+ tmpFileName = fso.GetSpecialFolder(2) & "\" & fso.GetBaseName(fso.GetTempName) & ".xlsm"
92
+
93
+
94
+
95
+ FileCopy TIMER_BOOK_FILENAME, tmpFileName
96
+
97
+
98
+
99
+ Dim otherApp As Application
100
+
101
+ Set otherApp = New Application
102
+
103
+
104
+
105
+ Set TIMER_BOOK = otherApp.Workbooks.Open(tmpFileName)
106
+
107
+ With TIMER_BOOK.Application
108
+
109
+ .Run "SetTarget", ThisWorkbook.FullName
110
+
111
+ .Run "StartTimer", "MoveNext", 10, 10
112
+
113
+ End With
114
+
115
+
116
+
117
+ End Sub
118
+
119
+
120
+
121
+ Public Sub End_Test()
122
+
123
+ If (Not TIMER_BOOK Is Nothing) Then
124
+
125
+ Dim bookName As String
126
+
127
+ bookName = TIMER_BOOK.FullName
128
+
129
+ TIMER_BOOK.Application.Quit
130
+
131
+ Kill bookName
132
+
133
+ End If
134
+
135
+ End Sub
136
+
137
+
138
+
139
+ Public Sub MoveNext()
140
+
141
+ '省略
142
+
143
+ End Sub
144
+
145
+ ```