ご覧いただきありがとうございます。
ExcelVBAでの質問です。
データを取り込んだ後成形し、別ブックにCSV形式で保存するマクロなのですが
なぜかCSVに最終行に数行,,,とからの項目が出てしまします。
コードとして未熟な部分が多々ありますがなぜこうなるのかご教授ください。
単純に最終行から9999行を行削除してみたのですが消えませんでした。
コードを載せますのでご覧ください。
よろしくお願いします。
Option Explicit '----- 参照設定 Microsoft CDO for Windows 2XXX Library Public Const myADDRESS As String _ = "http://schemas.microsoft.com/cdo/configuration/" Public hi As String Public strFileName As String Dim gyo As Long Dim gyo2 As Long Dim filecount As Long Dim sheetcount As Long Dim unmatch As Long Dim erfilecount As Long 'ボタンを押したとき Sub FolderSelect() Dim LastRow As Long '最終行の指定 LastRow = ThisWorkbook.Worksheets(4).Cells(Rows.Count, "B").End(xlUp).Row + 1 ThisWorkbook.Worksheets(4).Range("A1:K" & LastRow).ClearContents Dim folderpass As String With Application.FileDialog(msoFileDialogFilePicker) If .Show = True Then folderpass = .SelectedItems(1) Else ThisWorkbook.Worksheets(1).Range("B3").Value = "キャンセルしました。" Exit Sub End If End With filecount = 0 sheetcount = 0 unmatch = 0 erfilecount = 0 gyo = 6 gyo2 = 2 ThisWorkbook.Worksheets(1).Range("B2").Value = "処理中" Call FileSearch(folderpass, "*.csv") Dim dateupdate As String dateupdate = Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日更新" ThisWorkbook.Worksheets(1).Range("B2").Value = "完了" ThisWorkbook.Worksheets(2).Activate End Sub 'ファイル検索 Sub FileSearch(Path As String, Target As String) Dim FSO As Object, Folder As Variant, File As Variant Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.getfile(Path) filecount = filecount + 1 ThisWorkbook.Worksheets(1).Cells(gyo, 1) = File.Name ThisWorkbook.Worksheets(1).Cells(gyo, 2) = File.Path Call ParCopy(File.Path) ThisWorkbook.Worksheets(1).Range("B3").Value = filecount & "個のファイルが見つかりました。" 'Next File End Sub ''一覧出力 Sub ParCopy(Path As String) Dim openbook As Workbook Dim openbooksheet As Worksheet Dim lp As Long Dim el As Long Dim lo As Long Dim br As String Dim c As Range, Target As Range Dim LastRow As Long Dim FSO As Object Dim FileName_InFolder As String LastRow = ThisWorkbook.Worksheets(2).Cells(Rows.Count, "B").End(xlUp).Row + 1 ThisWorkbook.Worksheets(2).Range("A1:K" & LastRow).ClearContents Application.ScreenUpdating = False On Error GoTo myError Set openbook = Application.Workbooks.Open(Path) 'シートを格納 Set openbooksheet = openbook.Worksheets(1) openbooksheet.Unprotect '最終行の指定 LastRow = openbooksheet.Cells(Rows.Count, "B").End(xlUp).Row + 1 'マクロ側へのコピペ 'データを持ってきて openbooksheet.Range("A1:K" & LastRow).Copy ThisWorkbook.Worksheets(4).Range(ThisWorkbook.Worksheets(4).Cells(1, 1), ThisWorkbook.Worksheets(4).Cells(1, 1)) el = 2 Do Until el = LastRow If ThisWorkbook.Worksheets(4).Cells(el, "C") = "xxx" Then ThisWorkbook.Worksheets(4).Rows(el).Delete End If el = el + 1 Loop '左三列を値貼り付けして ThisWorkbook.Worksheets(4).Range("L1:N" & LastRow).Copy ThisWorkbook.Worksheets(2).Range(ThisWorkbook.Worksheets(2).Cells(1, 1), ThisWorkbook.Worksheets(2).Cells(1, 1)).PasteSpecial Paste:=xlPasteValues '残りを持ってくる.. ThisWorkbook.Worksheets(4).Range("E1:K" & LastRow).Copy ThisWorkbook.Worksheets(2).Range(ThisWorkbook.Worksheets(2).Cells(1, 4), ThisWorkbook.Worksheets(2).Cells(1, 4)) openbook.Close False LastRow = ThisWorkbook.Worksheets(5).Cells(Rows.Count, "G").End(xlUp).Row ThisWorkbook.Worksheets(5).Range("G1:P" & LastRow).Copy LastRow = ThisWorkbook.Worksheets(2).Cells(Rows.Count, "E").End(xlUp).Row + 1 ThisWorkbook.Worksheets(2).Range(ThisWorkbook.Worksheets(2).Cells(LastRow, 1), ThisWorkbook.Worksheets(2).Cells(LastRow, 1)).PasteSpecial Paste:=xlPasteAll '誕生日が入って無い人を消す el = LastRow Do Until el = 2 If Range("I" & el) = "" Then ThisWorkbook.Worksheets(2).Rows(el).Delete End If el = el - 1 Loop el = 7 '日付の型を変更 Do Until el = 10 lo = 2 Do Until lo = LastRow ThisWorkbook.Worksheets(2).Cells(lo, el).NumberFormatLocal = "yyyy/mm/dd" lo = lo + 1 Loop el = el + 1 Loop lp = LastRow + 9999 ThisWorkbook.Worksheets(2).Rows(LastRow & ":" & lp).Delete Call test02 Application.ScreenUpdating = True Exit Sub myError: MsgBox Err.Description erfilecount = erfilecount + 1 Application.ScreenUpdating = True End Sub 'Sheet2での退職者区分け Sub test02() Dim wb1 As Workbook Dim i As Long Dim s As Long Dim mo As String Dim td As String Dim FileName_InFolder As String Dim LastRow As Long Dim strYYYYMMDD As String 'Now関数で取得した現在日付をFormatで整形して変数に格納 strYYYYMMDD = Format(Now, "yyyymmdd") '最終行の取得 LastRow = ThisWorkbook.Worksheets(2).Cells(Rows.Count, "B").End(xlUp).Row + 1 i = 2 td = ThisWorkbook.Worksheets(2).Cells(i, "K") Do Until i = LastRow mo = ThisWorkbook.Worksheets(2).Cells(i, "A") If ThisWorkbook.Worksheets(2).Cells(i, "H") <> "" Then ThisWorkbook.Worksheets(2).Cells(i, "C") = td ThisWorkbook.Worksheets(2).Cells(i, "B") = mo & "退職" End If i = i + 1 Loop 'ヘッダーの削除 ThisWorkbook.Worksheets(2).Rows(1).Delete 'CSVで別ファイル保存 Set wb1 = ThisWorkbook mo = strYYYYMMDD Workbooks.Add.SaveAs Filename:=mo, FileFormat:=xlCSV wb1.Worksheets(2).Copy After:=Workbooks(mo & ".csv").Worksheets(1) Workbooks(mo & ".csv").Save Workbooks(mo & ".csv").Saved = True Workbooks(mo & ".csv").Close End Sub
毎回未熟な質問で申し訳ありません。
皆様のお力をお貸しください。
Excelは2013を使用しております。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。