Как сделать цикл для удаления листа, если и только если значения одинаковы? - PullRequest
0 голосов
/ 18 июня 2019

Я извлекаю данные из SAP в Excel, я делаю это: - транзакция автоматически выполняется в SAP, чтобы затем сохранить мой файл в текстовой папке - VBA читает мой текстовый файл - склеить его во временную таблицу Excel и затемв моей таблице - проблема в том, что иногда у меня нет никаких данных, потому что SAP не находит ничего, кроме того, что он вставляет данные предыдущей транзакции (поскольку у меня есть несколько транзакций для выполнения), что я хотел решитьмоя проблема заключается в том, что я хочу сделать цикл «Если мои данные в буфере обмена совпадают с временным листом, выберите timeheet2 (который будет без данных все время)» и скопируйте его в мою таблицу (которая будет пустой) Я не уверен, что это правильный метод, но я думаю, что он осуществим, и это решило бы проблему

   Sub StartExtract()

  ' Set the sid and client to connect to
    W_System = "P10320"
  ' Run the GUI script
    RunGUIScript
  ' End the GUI session
   objSess.EndTransaction
  'effacer contenu feuille temp
   Sheets("temp").Select
   Cells.Select
   Selection.Delete Shift:=xlUp
 ' Switch to the worksheet where the data is loaded to
  Sheets("temp").Select

  ' Load the CSV file
   OpenCSVFile



    Sheets("BGSOCIAL").Select
    Columns("B:G").Select
   Selection.ClearContents
   Sheets("temp").Range("B:G").Copy
   Sheets("BGSOCIAL").Range("B:G").PasteSpecial Paste:=xlPasteValues
   Sheets("BGSOCIAL").Select

enter image description here

1 Ответ

0 голосов
/ 20 июня 2019

Вы не можете оценить, имеет ли область, из которой вы копируете, значения.Тем не менее, я думаю, что если диапазон Temp пуст, мы можем пропустить все ниже.Я также рекомендовал бы использовать набор значений вместо xlPasteValues

Надеюсь, что это работает.

Sub StartExtract()

  ' Set the sid and client to connect to
    W_System = "P10320"
  ' Run the GUI script
    RunGUIScript
  ' End the GUI session
   objSess.EndTransaction
  'effacer contenu feuille temp
   Sheets("temp").Select
   Cells.Select
   Selection.Delete Shift:=xlUp
 ' Switch to the worksheet where the data is loaded to
     Sheets("temp").Select

  ' Load the CSV file
   OpenCSVFile

'Modified code below...


If Application.WorksheetFunction.CountA(Range("B:G")) = 0 Then
    'skips as no values in the range.

Else
'   Dont need to copy and paste, just set the values to being the same.
    Sheets("BGSOCIAL").Range("B:G").Value = Sheets("temp").Range("B:G").Value


End If

  Sheets("BGSOCIAL").Select

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...