仅当值相同时,如何循环删除工作表?

时间:2019-06-18 08:56:20

标签: excel vba sap

我从SAP提取数据到excel,我这样做: -交易会自动在SAP中运行,然后将我的文件保存在txt文件夹中 -VBA读取我的txt文件 -将其粘在Excel临时表中,然后在我的表中 -问题是有时我没有任何数据,因为SAP除了粘贴上次交易的数据(因为我要执行几笔交易)外找不到任何数据,我想解决的问题是我想做一个循环“如果剪贴板中的数据与临时表相同,请选择timesheet2(一直没有数据)”并将其复制到我的表中(该表将为空) 我不确定这是正确的方法,但我认为这是可行的并且可以解决问题

   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 :(得分:0)

您无法评估要复制的区域是否具有值。但是,我认为如果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