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

質問編集履歴

1

マクロの終生、試したことを具体的に、

2020/07/16 02:23

投稿

Task_0513
Task_0513

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,8 +3,8 @@
3
3
  ファイル名とシート名は年度が入っているので毎年変わることは確定しています。
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
- そもそもとして、選択ファイル変数にしたいですがそれっているの、わから
6
+ シートそのままVer1Bookコピーしたいですが、コピーした段階でエラー発生してしまいかなくなります
7
- タ元セルは、B4:H4までにデータが入っていて最終行はそ年ごとにわります
7
+ 指定やブックの指定など更して試していますがうまく動きません
8
8
 
9
9
 
10
10
  ```
@@ -15,88 +15,59 @@
15
15
  ### 該当のソースコード
16
16
 
17
17
  ```VBA
18
- Sub excelcopy()
19
18
 
20
- Dim ExcFileName As Variant 'String
21
- Dim ExcintFree As Integer
22
- Dim ExcstrRec As String
23
- Dim ExcstrSplit As String
24
- Dim k As Long, m As Long, n As Long, o As Long
25
- Dim ExcWb As Workbook
26
-
27
19
 
20
+ Sub データ取り込み2()
28
21
 
29
- ExcFileName = Application.GetOpenFilename(FileFilter:="Excel ワークシート (*.xlsx),*.xlsx", _
30
- Title:="Excelファイルの選択")
31
-
32
22
 
23
+ Application.DisplayAlerts = False ' メッセージを非表示
24
+
25
+ 'Sheets2のデータを削除する
26
+ 'Sheets(2).Delete
27
+
28
+ Dim OpenFileName As String, FileName As String
29
+ OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx")
33
- If ExcFileName <> False Then
30
+ If OpenFileName <> "False" Then
34
- 'Workbooks.Open ExcFileName
31
+ Workbooks.Open OpenFileName
35
- Else
36
- MsgBox "キャンセルされました"
37
- 'Exit Sub
38
- End If
39
32
 
33
+
40
- ExcintFree = FreeFile '空番号を
34
+ '取り込むエクセルシートを開く
41
- Open ExcFileName For Input As #ExcintFree 'Excelファィルをオープン
35
+ Workbooks("Microsoft Excelブック,*.xlsx").Sheets(1).Select.Copy _
36
+ After:=Workbooks("Ver1.xlsm").Sheets(2)
42
37
 
38
+ FileName = Dir(OpenFileName)
39
+
43
- '既存の記載内容を削除する
40
+ Workbooks(FileName).Close
44
41
 
45
-
46
- ThisWorkbook.Activate
42
+ Sheets(1).Activate
43
+
44
+ Else
47
- Worksheets("対象エリア").Select
45
+ MsgBox "データ取り込みがキャンセルされました"
48
- Worksheets("対象エリア").Range("A2", ActiveCell.SpecialCells(xlLastCell)).ClearContents
49
-
50
- Set ExcFileName = ExcWb
51
-
52
- n = Workbooks("ExcWb").Cells(Rows.Count, 1).End(xlUp) 'データ元のシートの最終行の取得【ここでエラー】
53
- k = 4
54
- m = 2
55
-
56
- For o = k To n '4行目から最終行まで繰り返す
57
46
 
58
- ExcWb.Activate     'マクロの記録で出たものを変数を入れています。
59
- Rows(k).Select
60
- Application.CutCopyMode = False
61
- Selection.Copy
62
- thisworkbooks.Activate
63
- Worksheets("対象エリア").Select
64
- Cells(m, 1).Select
65
- Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
66
- :=False, Transpose:=False
67
- k = k + 1
47
+ End If
68
- m = m + 1
69
- Next
70
-
71
-
72
-
73
-
74
-
75
48
 
76
- 'k = 3
49
+ End Sub
77
- 'm = 0
78
- 'Do Until EOF(ExcintFree)
79
- 'Line Input #ExcintFree, ExcstrRec '1行読み込み
80
- 'k = k + 1
81
- 'ExcstrSplit = Split(Replace(ExcstrRec, """", ""), ",") 'カンマ区切りで配列へ
82
- 'For m = 0 To UBound(ExcstrSplit)
83
- 'Cells(k, m + 1) = ExcstrSplit(m)
84
- 'Next
85
- 'エラーメッセージに関しては9行目(I列に出力)
86
- 'Cells(k, 9).Value = ErrMsg_1
87
-
88
- 'Loop
89
50
 
90
- End Sub
91
51
 
92
-
93
52
  ```
94
53
 
95
54
 
96
55
 
97
56
  ### 試したこと
98
- グーグルなど調べて入力していますがどうにもきちんと理解できている気がしません。
99
57
 
58
+ ’Workbooks.Open OpenFileName  ’非表示に変更
59
+
60
+ Workbooks(OpenFileName).Sheets(1).Select.Copy _
61
+ After:=Workbooks("Ver1.xlsm").Sheets(2)
62
+
63
+ Workbooks("OpenFileName").Sheets(1).Select.Copy _
64
+ After:=Workbooks("Ver1.xlsm").Sheets(2)
65
+
66
+ Workbooks("Microsoft Excelブック,*.xlsx").Sheets(1).Select.Copy _
67
+ After:=Workbooks("Ver1.xlsm").Sheets(2)
68
+
69
+ と指定のブック名がいけないのかと繰り返していますがどれも有効範囲エラーが出ます。
70
+
100
71
  ### 補足情報(FW/ツールのバージョンなど)
101
72
 
102
73
  Excel2013