Как конвертировать сводную таблицу из макроса VBA в Vbscript? - PullRequest
0 голосов
/ 27 мая 2019

Я новичок в макросах. Я хочу сделать сводную таблицу данных. Я не могу использовать макросы VBA внутри Excel, вместо этого я могу использовать внешне как запись в VBscript и выполнять как файл ".VBS". Хотя мне удалось создать объекты Excel и поместить данные, но я сталкиваюсь с трудностями при создании сводной таблицы. Мне известно, что VBA и vbscript похожи, поэтому я попытался использовать VBA, как показано ниже:

Сначала я попытался создать объекты Excel, используя Vbscript:

Set obj = createobject("Excel.Application")
obj.visible = True
Set obj1 = obj.Workbooks.Add
obj.Cells(1,1).Value = "NM"
obj.Cells(1,2).Value = "VL"
obj.Cells(2,1).Value = "A"
obj.Cells(2,2).Value = 1
obj.Cells(3,1).Value = "B"
obj.Cells(3,2).Value = 2
obj.Cells(4,1).Value = "C"
obj.Cells(4,2).Value = 3
obj.Cells(5,1).Value = "D"
obj.Cells(5,2).Value = 4

Excel using Vbscript

Затем я попытался использовать макросы VBA (bulit-in excel macro) для поворота таблицы в самом файле Excel.

    Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R5C2", Version:=6).CreatePivotTable TableDestination:= _
        "Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion:=6
    Sheets("Sheet2").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("VL")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("NM")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").PivotFields("NM").CurrentPage = "(All)"
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("NM")
        .PivotItems("A").Visible = False
        .PivotItems("C").Visible = False
    End With
    ActiveSheet.PivotTables("PivotTable1").PivotFields("NM"). _
        EnableMultiplePageItems = True
    Application.Goto Reference:="Macro1"
End Sub

Pivot Table using excel VBA

Сейчас я пытаюсь сделать то же самое с помощью VBScript, но не получаю его. Я попытался использовать то же самое и сделал изменения, такие как добавление имени объекта Excel до методов, но все еще не работает.

Set obj = createobject("Excel.Application")
obj.visible = True
Set obj1 = obj.Workbooks.Add
obj.Cells(1,1).Value = "NM"
obj.Cells(1,2).Value = "VL"
obj.Cells(2,1).Value = "A"
obj.Cells(2,2).Value = 1
obj.Cells(3,1).Value = "B"
obj.Cells(3,2).Value = 2
obj.Cells(4,1).Value = "C"
obj.Cells(4,2).Value = 3
obj.Cells(5,1).Value = "D"
obj.Cells(5,2).Value = 4

'Tried making changes:

'Adding Excel object
Obj.ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R5C2", Version:=6).CreatePivotTable TableDestination:= _
        "Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion:=6

'Even Adding Excel workbook object
Obj1.ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Sheet1!R1C1:R5C2", Version:=6).CreatePivotTable TableDestination:= _
            "Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion:=6

Это показывает ошибку отсутствия скобки, поэтому я даже попытался поместить ее в одну строку.

 obj.ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="R1C1:R6C2", Version:=6).CreatePivotTable TableDestination:= _"Sheet1!R3C1", TableName:="PivotTable1", DefaultVersion:=6

Но все равно отображается та же ошибка, что и " Ошибка: ожидается") ' "( в той же строке ). Тем не менее, это правильный синтаксис для макросов VBA, но во время выполнения vbscript он выдает ошибку. есть ли какие-либо синтаксические различия или изменения, которые необходимо сделать.

Может кто-нибудь помочь мне или предложить мне, как это сделать или сделать это.

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