Этот код копирует данные из рабочего листа и вставляет данные в файл test.csv.Если test.csv закрыт, он открывает его и вставляет в него данные.Если он уже открыт, просто вставьте в него данные.До этого шага процесс работает нормально.После того, как данные вставлены в test.csv, мне нужно удалить строки с первым столбцом со значением «Old».А затем удалите весь столбец "A".
Вот проблема, с которой я сталкиваюсь.Если test.csv закрыт, макрос открывает его, вставляет данные, а затем удаляет строки и столбцы и работает, как и ожидалось, однако, если test.csv уже открыт, он вставляет значения, как предполагаетсяк, но удаляя строки и столбцы это делает в основном листе.Я попытался поместить код удаления в с блоком, но это не помогает.Пожалуйста, предложите!
Sub Macro()
Dim LR As Long, PR As Long, X As Long, MyCopyRange, MyPasteRange
Dim wb, myData As Workbook, shtPaste As Worksheet
Set wb = ThisWorkbook
'open target csv file if not already opened
If CheckFileIsOpen("test.csv") = False Then
Set myData = Workbooks.Open(strFinalizedForBulkImport & "test.csv")
Else
Set myData = Workbooks("test.csv")
End If
Set shtPaste = myData.Sheets("test")
shtPaste.UsedRange.Clear
With wb.Sheets("Report Grp")
LR = .Range("A" & .Rows.Count).End(xlUp).Row
MyCopyRange = Array("A4:A" & LR, "B4:B" & LR, "C4:C" & LR, "D4:D" & LR) 'Put ranges in an array
MyPasteRange = Array("A1", "B1", "C1", "D1")
If LR > 1 Then
j = 0
For X = LBound(MyCopyRange) To UBound(MyCopyRange) 'Loop the array copying and pasting based on element in the array
.Range(MyCopyRange(j)).Copy
shtPaste.Range(MyPasteRange(j)).PasteSpecial xlPasteValuesAndNumberFormats
j = j + 1
Next
Else
Range("A1") = "No Data Found"
End If
End With
'Problem here, when trying to delete row with "Old" in Col "A" and finally Col "A" delete -
With wb.Sheets("test")
For LR = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
If Range("A" & LR).Value = "Old" Then
Rows(LR).EntireRow.Delete
End If
Next LR
Columns("A").Delete Shift:=xlShiftToLeft
End With
End Sub