回答編集履歴

3

コード修正

2020/08/12 07:20

投稿

hatena19
hatena19

スコア33761

test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
 
90
90
 
91
- Dim fromSheet As Range '貼り付け元シート
91
+ Dim fromSheet As Worksheet '貼り付け元シート
92
92
 
93
93
  Set fromSheet = fromBook.ActiveSheet
94
94
 

2

コード修正

2020/08/12 07:20

投稿

hatena19
hatena19

スコア33761

test CHANGED
@@ -68,9 +68,11 @@
68
68
 
69
69
 
70
70
 
71
+ 追記
72
+
71
73
  ---
72
74
 
73
-
75
+ コメントの情報を考慮して
74
76
 
75
77
  コードの一例
76
78
 
@@ -86,21 +88,27 @@
86
88
 
87
89
 
88
90
 
91
+ Dim fromSheet As Range '貼り付け元シート
92
+
93
+ Set fromSheet = fromBook.ActiveSheet
94
+
95
+
96
+
89
97
  Dim fromRng As Range '貼り付け元セル範囲
90
98
 
91
- Set fromRng = fromBook.ActiveSheet.Range("A1:O38")
99
+ Set fromRng = fromSheet.Range("A1:O38")
92
100
 
93
101
 
94
102
 
95
- Dim toBook As Workbook '貼り付け先ブック
103
+ Dim newBook As Workbook '貼り付け先ブック=新規ブック
96
104
 
97
- Set toBook = Workbooks.Open("ここは貼り付け先ブックのパスをコピペ")
105
+ Set newBook = Workbooks.Add
98
106
 
99
107
 
100
108
 
101
109
  Dim toRng As Range '貼り付け先セル範囲
102
110
 
103
- Set toRng = toBook.Worksheets(1).Range("C2:Q39")
111
+ Set toRng = newBook.Worksheets(1).Range("C2:Q39")
104
112
 
105
113
 
106
114
 
@@ -108,14 +116,22 @@
108
116
 
109
117
 
110
118
 
111
- toBook.Save '上書き保存
119
+ Dim NewBookName As String
112
120
 
113
- ' toBook.SaveAs Filename:="ここは変更後パスをコピペ" 'ブックの名前を変更する場合
121
+ NewBookName = fromSheet.Range("請求書番号あるセル") & ".xlsx"
114
122
 
123
+
124
+
125
+ newBook.SaveAs FileName:="ここは格納先のパスをコピペ" & NewBookName
126
+
115
- toBook.Close
127
+ newBook.Close
116
128
 
117
129
 
118
130
 
119
131
  End Sub
120
132
 
121
133
  ```
134
+
135
+
136
+
137
+ 変数名は意味の分かるものにするとコードが読みやすくなると思います。

1

コード追記

2020/08/11 19:25

投稿

hatena19
hatena19

スコア33761

test CHANGED
@@ -65,3 +65,57 @@
65
65
 
66
66
 
67
67
  上記を考慮してコードを再検討してみてください。
68
+
69
+
70
+
71
+ ---
72
+
73
+
74
+
75
+ コードの一例
76
+
77
+
78
+
79
+ ```vba
80
+
81
+ Sub 名前をつけて()
82
+
83
+ Dim fromBook As Workbook '貼り付け元ブック
84
+
85
+ Set fromBook = ThisWorkbook 'マクロの記述してあるブック
86
+
87
+
88
+
89
+ Dim fromRng As Range '貼り付け元セル範囲
90
+
91
+ Set fromRng = fromBook.ActiveSheet.Range("A1:O38")
92
+
93
+
94
+
95
+ Dim toBook As Workbook '貼り付け先ブック
96
+
97
+ Set toBook = Workbooks.Open("ここは貼り付け先ブックのパスをコピペ")
98
+
99
+
100
+
101
+ Dim toRng As Range '貼り付け先セル範囲
102
+
103
+ Set toRng = toBook.Worksheets(1).Range("C2:Q39")
104
+
105
+
106
+
107
+ toRng.Value = fromRng.Value
108
+
109
+
110
+
111
+ toBook.Save '上書き保存
112
+
113
+ ' toBook.SaveAs Filename:="ここは変更後のパスをコピペ" 'ブックの名前を変更する場合
114
+
115
+ toBook.Close
116
+
117
+
118
+
119
+ End Sub
120
+
121
+ ```