質問編集履歴
3
コード記載ミスの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
' 請求書ファイルを開く'
|
34
34
|
Dim invoiceBookPath As String
|
35
35
|
invoiceBookPath = ThisWorkbook.path & "\請求書.xlsm"
|
36
|
-
Workbooks.Open
|
36
|
+
Workbooks.Open invoiceBookPath
|
37
37
|
|
38
38
|
'請求書ファイルの先頭に複製を作成'
|
39
39
|
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
2
不要なコード削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,25 +54,7 @@
|
|
54
54
|
|
55
55
|
いずれも上手くいきませんでした・・・
|
56
56
|
|
57
|
-
以下コード
|
58
|
-
Sub duplicateEstimateToInvoice()
|
59
|
-
'見積書シート名を取得'
|
60
|
-
Dim estimateSheetName As String
|
61
|
-
estimateSheetName = ThisWorkbook.ActiveSheet.Name
|
62
57
|
|
63
|
-
' 請求書ファイルを開く'
|
64
|
-
Dim invoiceBookPath As String
|
65
|
-
invoiceBookPath = ThisWorkbook.path & "\請求書.xlsm"
|
66
|
-
Workbooks.Open invoiceBookPath
|
67
|
-
|
68
|
-
'請求書ファイルの先頭に複製を作成'
|
69
|
-
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
70
|
-
|
71
|
-
'以下タイトルやシート名を変更する処理'
|
72
|
-
|
73
|
-
End Sub
|
74
|
-
|
75
|
-
|
76
58
|
### 補足情報(FW/ツールのバージョンなど)
|
77
59
|
|
78
60
|
windows10
|
1
書式の改善、コードの記載ミス修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,44 +1,50 @@
|
|
1
|
+
### エクセルVBAでどうしても解決できないオートメーションエラーがあるので相談させてください。
|
1
|
-
|
2
|
+
見積書を請求書に変換するというマクロを作っております
|
3
|
+
具体的にはこのような処理の流れになっています。
|
2
4
|
|
3
|
-
|
5
|
+
①同一フォルダ内の請求書.xlsmブックを開く
|
4
|
-
(例)PHP(CakePHP)で●●なシステムを作っています。
|
5
|
-
|
6
|
+
②請求書.xlsmブックの先頭に見積シートのコピーを作成
|
7
|
+
③タイトルやシート名を変更
|
6
8
|
|
9
|
+
この時、②の処理で「オートメーション エラーです。起動されたオブジェクトはクライアントから切断されました」というメッセージが表示されます。
|
10
|
+
|
11
|
+
デバッグボタンを押すと、こちらの部分がハイライトされます。
|
12
|
+
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
13
|
+
|
14
|
+
また、エラーは毎回発生するのではなく発生したり、しなかったりで再現性がありません。
|
15
|
+
|
16
|
+
特段重い処理では無いように思いますし、コピーするシートも一般的な見積書で、大量のデータやシェイプを使用したものではないと思います。
|
17
|
+
なぜこのような事が起きるか分かる方いらっしゃいますでしょうか?
|
18
|
+
|
7
19
|
### 発生している問題・エラーメッセージ
|
8
20
|
|
9
21
|
```
|
10
|
-
|
22
|
+
オートメーション エラーです。起動されたオブジェクトはクライアントから切断されました
|
11
23
|
```
|
12
24
|
|
13
25
|
### 該当のソースコード
|
14
26
|
|
15
27
|
```ここに言語名を入力
|
28
|
+
Sub duplicateEstimateToInvoice()
|
16
|
-
|
29
|
+
'見積書シート名を取得'
|
17
|
-
|
30
|
+
Dim estimateSheetName As String
|
31
|
+
estimateSheetName = ThisWorkbook.ActiveSheet.Name
|
18
32
|
|
19
|
-
|
33
|
+
' 請求書ファイルを開く'
|
34
|
+
Dim invoiceBookPath As String
|
35
|
+
invoiceBookPath = ThisWorkbook.path & "\請求書.xlsm"
|
36
|
+
Workbooks.Open invoiceFilePath
|
20
37
|
|
38
|
+
'請求書ファイルの先頭に複製を作成'
|
21
|
-
|
39
|
+
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
22
40
|
|
23
|
-
|
41
|
+
'以下タイトルやシート名を変更する処理'
|
24
|
-
具体的にはこのような処理の流れになっています。
|
25
|
-
(コードは質問最下部に掲載しています。)
|
26
42
|
|
27
|
-
①同一フォルダ内の請求書.xlsmブックを開く
|
28
|
-
②請求書.xlsmブックの先頭に見積シートのコピーを作成
|
29
|
-
|
43
|
+
End Sub
|
44
|
+
```
|
30
45
|
|
31
|
-
|
46
|
+
### 試したこと
|
32
47
|
|
33
|
-
デバッグボタンを押すと、こちらの部分がハイライトされます。
|
34
|
-
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
35
|
-
|
36
|
-
また、エラーは毎回発生するのではなく発生したり、しなかったりで再現性がありません。
|
37
|
-
|
38
|
-
特段重い処理では無いように思いますし、コピーするシートも一般的な見積書で、大量のデータやシェイプを使用したものではないと思います。
|
39
|
-
なぜこのような事が起きるか分かる方いらっしゃいますでしょうか?
|
40
|
-
|
41
|
-
試してみた事
|
42
48
|
・onedriveの共有対象から外す
|
43
49
|
・請求書.xlsmを開いた際にworkbook_openイベントで自動で実行するマクロを登録していましたが、それを削除
|
44
50
|
・キャッシュを削除
|
@@ -57,7 +63,7 @@
|
|
57
63
|
' 請求書ファイルを開く'
|
58
64
|
Dim invoiceBookPath As String
|
59
65
|
invoiceBookPath = ThisWorkbook.path & "\請求書.xlsm"
|
60
|
-
Workbooks.Open
|
66
|
+
Workbooks.Open invoiceBookPath
|
61
67
|
|
62
68
|
'請求書ファイルの先頭に複製を作成'
|
63
69
|
ThisWorkbook.Worksheets(estimateSheetName).copy Before:=Workbooks("請求書.xlsm").Worksheets(1)
|
@@ -66,10 +72,10 @@
|
|
66
72
|
|
67
73
|
End Sub
|
68
74
|
|
69
|
-
環境
|
70
|
-
windows10
|
71
|
-
Excel for microsoft 365
|
72
75
|
|
73
76
|
### 補足情報(FW/ツールのバージョンなど)
|
74
77
|
|
78
|
+
windows10
|
75
|
-
|
79
|
+
Excel for microsoft 365
|
80
|
+
CPU intel10世代i5
|
81
|
+
メモリ16GB
|