2015-06-16 2 views
0

С помощью следующего кода я пытаюсь переместить лист в книгу Excel из одного места в другое. Однако вместо перехода - Excel создает новую Рабочую книгу. Как переместить лист из одного места в другое в пределах одной рабочей книги?Excel VBA (через JavaScript) - Перемещение листа в новое место

/////////////////////////////////////////////////////////////////////////// 
//                  // 
// function serviceInitExcel($scope)          // 
// Version:                // 
// Description: Initialize Excel Spreadsheet        // 
// Date:                 // 
// To Do:                // 
// Author:                // 
//                  // 
/////////////////////////////////////////////////////////////////////////// 

var serviceInitExcel = function() { 

    var _SCFR; 

    var _filename = "emptyServiceValue"; 
    var _serviceBrowser = ""; 

    var service = {}; 

    service.soundOff = function() { 

     alert("Another generic method"); 

    } 

    service.initExcel = function() { 

     var _scfr = new ActiveXObject("Excel.Application"); 
      _scfr.Visible = true; 
      _scfr.Workbooks.Add; 

     // alert("Application Initialized: " + _scfr.Name); 

     _SCFR = _scfr; 

     return _SCFR; 

    } // genericMethod 

    service.createSheet = function(iWorkbook, sheetName) { 

     var pblSheet = iWorkbook.Sheets("Payable"); 
      pblSheet.Range("A1").Value = "Payable Sheet"; 

     var newSheet = iWorkbook.Worksheets.Add; 
      newSheet.Name = sheetName; 

      newSheet.Select 

      newSheet.Range("A1").Value = "_SCFR.Name: "  + _SCFR.Name; 
      newSheet.Range("A2").Value = "ActiveWorkbook: " + _SCFR.ActiveWorkbook.Name; 
      newSheet.Range("A3").Value = "Sheet 1: " + _SCFR.ActiveWorkbook.Sheets(1).Name; 
      newSheet.Range("A4").Value = "Sheet 2: " + _SCFR.ActiveWorkbook.Sheets(2).Name; 
      newSheet.Range("A5").Value = "Sheet 3: " + _SCFR.ActiveWorkbook.Sheets(3).Name; 

      newSheet.Range("A6").Value = "testSheet: " + iWorkbook.Sheets("testSheet").Name; 
      newSheet.Range("A7").Value = "Payable: " + iWorkbook.Sheets("Payable").Name; 
      newSheet.Range("A8").Value = "Paid: "  + iWorkbook.Sheets("Paid").Name; 

      for (var s=0; s < 500; s++) { 

       newSheet.Range("A9").Value = s; 

       newSheet.Select 

       iWorkbook.Sheets("Payable").Select 

      } 

      iWorkbook.Sheets(newSheet.Name).Move + "After:=" + iWorkbook.Sheets("Payable"); 

      // newSheet.Move + "After:=" + iWorkbook.Sheets(3); 

      // Sheets("Payable").Select 
      // Sheets.Add 
      // Sheets("Sheet6").Select 
      // Sheets("Sheet6").Move After:=Sheets(3) 

      // _SCFR.Workbooks("Book1.xlsx").Sheets("testSheet").Move + "After:=" + _SCFR.Workbooks("Book1.xlsx").Sheets("Payable"); 

     return iWorkbook; 

    } // genericMethod 

    return service; 

} 

ответ

2

Это следует сделать это:

newSheet.Move(null, iWorkbook.Sheets("Payable")) 
+0

Этот ответ полностью решил это! Что МАКСИМАЛЬНОЕ признание, которое я могу вам дать? Вы действительно помогли мне здесь. – Imaginativeone

1

Я думаю, что если вы выберете конкатенацию, он будет работать нормально. Попробуйте это:

iWorkbook.Sheets(newSheet.Name).Move After:=iWorkbook.Sheets("Payable")

+0

Я, возможно, реализовал это неправильно, но я - TypeError: Неверное число аргументов или присвоение – Imaginativeone

+0

недействительных собственности @DougFranklin К сожалению, я было совершенно неправильно, см. мой пересмотренный ответ. – puzzlepiece87

+0

Нет проблем. Избавление от котировок дает мне новую ошибку: SCRIPT1004: Ожидаемый ';' 12serviceInitExcel.js, строка 73 символов 41 SCRIPT5009: 'serviceInitExcel' не определено controllers.htm, строка 272 символов 5 Ошибка: [$ Инжектор: unpr] Неизвестный поставщик: serviceInitExcelProvider <- serviceInitExcel <- controllerTestController HTTP: // errors.angularjs.org/1.3.11/$injector/unpr?p0=serviceInitExcelProvider%20%3C-%20serviceInitExcel%20%3C-%20controllerTestController – Imaginativeone

Смежные вопросы