vbscript для динамического обновления диапазона ячеек Excel при обновлении исходных данных и одновременного обновления сводной таблицы - PullRequest
0 голосов
/ 28 марта 2019

У меня есть книга Excel, состоящая из исходных данных и сводной таблицы.исходные данные ежедневно обновляются новыми записями вместе с некоторыми изменениями в существующих данных.

Я написал vbscript в блокноте и сохранил его с помощью .vbs, и я вызываю его из Rstudio для выполнения сводной таблицы обновленияaction.

Но когда я запускаю этот скрипт в Rstuido:

  pathofvbscript = ("D:\\Users\\703225799\\WIP\\R\\pivot\\r5.vbs")
  shell(shQuote(normalizePath(pathofvbscript)),"cscript",flag = 
  "//nologo")

Я получаю следующую ошибку:

   D:\Users\703225799\WIP\R\pivot\r5.vbs(14, 1) Microsoft VBScript runtime 
   error: Object doesn't support this property or method: 'objWB.Range'

VBS код:

 '------------------------------------------------------------------------
 'Set Pivot Table & Source Worksheet
 '------------------------------------------------------------------------
  Set objExcel    = CreateObject("Excel.Application")
  Set objWB       = 
  objExcel.Workbooks.Open("D:\Users\703225799\WIP\R\pivot\New 
  folder\Book1.xlsx")
  Set Pivot_Sheet = objWB.Worksheets("pvt")

  '-----------------------------------------------------------------------
  'Enter in Pivot Table Name
  '-----------------------------------------------------------------------
   PivotName = "PivotTable1"
   objWB.Activate

   Set StartPoint = objWB.Range("A1")
   LastCol = StartPoint.End(xlToRight).Column
   DownCell = StartPoint.End(xlDown).Row
   Set DataRange = Data_Sheet.Range(StartPoint, Cells(DownCell, LastCol))

   New_range = objWB.Name & "!" & DataRange.Address(xlR1C1)

   Pivot_Sheet.PivotTables(PivotName). _
   ChangePivotCache ActiveWorkbook. _
   PivotCaches.Create(xlDatabase,NewRange)

   '----------------------------------------------------------------------
   'Ensure Pivot Table is Refreshed
   '----------------------------------------------------------------------
   Pivot_Sheet.PivotTables(PivotName).RefreshTable

   'Data_Sheet.Save
   'MsgBox "Your Pivot Table is now saved."

   'Data_Sheet.Close
   'MsgBox "Your Pivot Table is now closed."

   'objExcel.Quit
   'MsgBox "objExcel quit."

   '----------------------------------------------------------------------
   'Complete Message
   '----------------------------------------------------------------------

    Pivot_Sheet.Activate
    MsgBox "Your Pivot Table is now updated."


    objWB.Save
    objWB.Close 

    set objExcel   = Nothing
    set Data_Sheet = Nothing
    Set Pivot_Sheet = Nothing

Пожалуйста, помогите с ошибкой.

Спасибо, Саян

1 Ответ

0 голосов
/ 29 марта 2019

Попробуйте использовать Pivot_Sheet.Range("A1") вместо objWB.Range("A1"), поскольку объект рабочего листа - Pivot_sheet

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