エクセルで調査票を作成しました。
複数部署からその調査票で回答が来るため、回答を集約するマクロを作成しているのですが、
ループの部分がおかしいようで、いくつかの問題が生じています。
①各調査票の5行目以降の回答ではなく、「5行目+前の調査票の回答行」番目の行を集約してきてしまいます。
②各調査票の右端の、最終列の項目まで取得したいのに、取得できません。
③各調査票について、集約のマクロを起動すると、すべての調査票が開き、「●●エクセルに変更を加えます」とポップアップが出てしまいます。単純に回答列だけ集約したいので、変更は入らないようにしたいです。
修正したいので、お力を貸してください。
VBA
1Public Sub MainProc() 2 Dim shtMain As Worksheet 3 Dim folderPath As String 4 Dim shtName As String 5 Dim dataStartRow As Long 6 Dim nowRow As Long 7 Dim shtTaisyo As Worksheet 8 Dim shtSyuyaku As Worksheet 9 Dim ext As String 10 Dim wb As Workbook 11 Dim lastRow As Long 12 Dim lastCol As Long 13 Dim fso As Object 14 Dim f As Object 15 16 '①「メイン」シートを変数に格納する 17 Set shtMain = ThisWorkbook.Sheets("メイン") 18 19 '②対象フォルダを変数に格納する 20 folderPath = shtMain.Range("A2") 21 22 '③シート名を変数に格納する 23 shtName = shtMain.Range("B2") 24 25 '④データ開始行を変数に格納する 26 dataStartRow = shtMain.Range("C2") 27 28 '⑤集約データ開始行を変数に格納する 29 nowRow = shtMain.Range("D2") 30 31 '⑥「集約データ」シートを変数に格納する 32 Set shtSyuyaku = ThisWorkbook.Sheets("集約データ") 33 34 '⑦「集約データ」シートの開始行以下をクリアする 35 shtSyuyaku.Rows(nowRow & ":" & shtSyuyaku.Rows.Count).Clear 36 37 '⑧FileSystemObjectを変数に格納する 38 Set fso = CreateObject("Scripting.FileSystemObject") 39 40 '⑨対象フォルダに存在するファイル数分処理する 41 For Each f In fso.GetFolder(folderPath).Files 42 43 '⑩ファイルの拡張子を変数に格納する 44 ext = LCase(fso.getextensionName(f.Name)) 45 46 '⑪拡張子が「xlsx」のみ処理を行う 47 If ext = "xlsx" Then 48 49 '⑫対象ブックを開く 50 Set wb = Workbooks.Open(folderPath & "\" & f.Name) 51 52 '⑬対象シートを変数に格納する 53 Set shtTaisyo = wb.Sheets(shtName) 54 55 '⑭対象シートの最終行を取得する 56 lastRow = shtTaisyo.Cells(shtTaisyo.Rows.Count, 1).End(xlUp).Row 57 58 '⑮対象シートの最終列を取得する 59 lastCol = shtTaisyo.Cells(1, shtTaisyo.Columns.Count).End(xlToLeft).Column 60 61 '⑯対象シートの対象データを集約シートにコピーする 62 shtTaisyo.Range(shtTaisyo.Cells(dataStartRow, 1), shtTaisyo.Cells(lastRow, lastCol)).Copy _ 63 (shtSyuyaku.Cells(nowRow, 1)) 64 65 '⑰次の貼り付け行を計算する 66 nowRow = nowRow + lastRow - (dataStartRow - 1) 67 68 '⑱対象ブックを閉じる 69 wb.Close 70 71 '⑲メモリを解放する 72 Set wb = Nothing 73 74 End If 75 Next 76 77 MsgBox "完了" 78End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/04 02:41