[英]How do I translate this code from Visual Basic to Perl?
我正在嘗試將Excel電子表格導出到SharePoint。 我錄制了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);
這張圖片顯示了結果
您應該use strict
並use warnings
。 然后它將繼續告訴您一些錯誤消息。
我可以從你發布的Perl代碼中得到的結果是:
my $list= $book->ActiveSheet->ListObjects("Table1")->Publish Array("https:\/\/sponsor\/sites\/dev_test_site", "myname"), False;
請注意, Publish
和Array(
之間有一個空格Array(
。這必須是一個問題。除了(
或;
或者,
如果它有原型)之外,讓函數cal后跟其他東西的唯一方法。但是面向對象的Perl中的方法調用不能有原型。所以這絕對是錯誤的。
那就是Array(...)
。 沒有名為Array
內置函數,我不認為Win32 :: OLE :: Const導出了,雖然我沒看。 即使它確實如此,你告訴它只導出'Microsoft Excel'
。 對於False
。
我建議你閱讀Win32 :: OLE :: Const的文檔並添加use strict
並use warnings
。 在SinanÜnürs博客上還有一些如何使用Win32模塊的資源。
您可以看看這個: 將perl腳本轉換為vba這已經有了一些答案。
您可能需要遵循此腳本。 % pp -o hello hello.pl
或類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.