2013-12-19 3 views
1

Я пытаюсь экспортировать электронную таблицу Excel в SharePoint. Я записал код Visual Basic, и теперь я хочу перевести его на Perl. Я так пробовал, но это не сработало.Как перевести этот код с Visual Basic на Perl?

У меня нет ошибок, но я также не вижу список в Sharepoint. Когда я сделал это с помощью макроса в Excel он работал

use Win32::OLE::Const 'Microsoft Excel'; 

my $excel = Win32::OLE->new('Excel.Application'); 
$excel->{'Visible'} = 1; 
$excel->{DisplayAlerts} = 1; 

my $book = $excel->Workbooks->Open("C:\\Book1.xlsx") 
    || die("Unable to open document ", Win32::OLE->LastError()); 

my $list = $book->ActiveSheet->ListObjects("Table1")->Publish Array("https:\/\/sponsor\/sites\/dev_test_site", "myname"), False; 

оригинальный Visual Basic код

Sub Macro1() 

    ActiveSheet.ListObjects("Table1").Publish Array(_ 
    "https://sponsor/sites/dev_test_site", "myname"), False 
    Range("C2").Select 
End Sub 

В конце концов я пришел с этим кодом

my $excel = Win32::OLE->new('Excel.Application'); 
$excel->{'Visible'} = 1; 
$excel->{DisplayAlerts} = 1; 

my $book = $excel->Workbooks->Open("C:\\Book1.xlsm") 
    || die("Unable to open document ", Win32::OLE->LastError()); 

my @array=("https:\/\/sponsor\/sites\/dev_test_site", "aaaa"); 

my $list= $book->ActiveSheet->ListObjects("hhhh")->Publish(@array, 0); 

И это изображение показывает результат

enter image description here

+3

Что означает «это не сработало» означает, какое сообщение об ошибке вы получаете? Есть ли конкретная причина, по которой вам нужно использовать Perl? Это такая работа, в которой Powershell достаточно хорошо подготовлен, поскольку она естественно связана с платформой .NET. Sharepoint и Excel взаимодействуют друг с другом. – glenatron

+0

У меня нет ошибок. но я также не вижу список в sharepoint. когда я сделал это, используя макрос в excel, он сработал. – Vera

+0

Пожалуйста, не используйте изображения текста в своих вопросах. Скопируйте и вставьте информацию, где это возможно. – Borodin

ответ

1

Вы можете взглянуть на это: Convert perl script to vba У этого уже есть ответы.

Возможно, вам потребуется следовать этому сценарию. % pp -o hello hello.pl или что-то в этом роде.

+0

У меня есть код VBA, который работает, я хочу преобразовать его в скрипт Perl – Vera

3

Вы должны use strict и use warnings. Затем он будет сообщать вам несколько сообщений об ошибках.

Что я могу сделать из кода Perl вы публикуемые без запуска это:

my $list= $book->ActiveSheet->ListObjects("Table1")->Publish Array("https:\/\/sponsor\/sites\/dev_test_site", "myname"), False; 

Обратите внимание, что существует пространство между Publish и Array(. Это должно быть проблемой. Единственный способ иметь функцию cal, за которой следует что-то, кроме ( или ; или ,, если у него есть прототипы. Но вызовы методов в объектно-ориентированном Perl не могут иметь прототипы. Так что это определенно неправильно.

Тогда есть Array(...). Нет встроенной функции, называемой Array, и я не думаю, что Win32 :: OLE :: Const экспортирует это, хотя я не смотрел. Даже если бы это было так, вы сказали, чтобы он экспортировал только 'Microsoft Excel'. То же самое касается False.

Предлагаю вам прочитать documentation of Win32::OLE::Const и добавить use strict и use warnings. Есть также некоторые ресурсы, как работать с модулями Win32 на Sinan Ünürs blog.

+0

вы можете помочь мне с функцией публикации массива? Я не могу найти нигде, как использовать его в Perl. – Vera

+0

Я не знаком с SharePoint. Я боюсь. Я могу только сказать вам, что синтаксически неправильно с вашим кодом. Сожалею. – simbabque

+0

Мне нужно только выяснить, как написать функцию массива публикации в Perl. он не имеет ничего общего с SharePoint. Я не могу найти где-нибудь методы для ListObjects – Vera

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