簡體   English   中英

如何將此代碼從Visual Basic轉換為Perl?

[英]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 strictuse warnings 然后它將繼續告訴您一些錯誤消息。

我可以從你發布的Perl代碼中得到的結果是:

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

請注意, PublishArray(之間有一個空格Array( 。這必須是一個問題。除了(;或者,如果它有原型)之外,讓函數cal后跟其他東西的唯一方法。但是面向對象的Perl中的方法調用不能有原型。所以這絕對是錯誤的。

那就是Array(...) 沒有名為Array內置函數,我不認為Win32 :: OLE :: Const導出了,雖然我沒看。 即使它確實如此,你告訴它只導出'Microsoft Excel' 對於False

我建議你閱讀Win32 :: OLE :: Const文檔並添加use strictuse warnings SinanÜnürs博客上還有一些如何使用Win32模塊的資源。

您可以看看這個: 將perl腳本轉換為vba這已經有了一些答案。

您可能需要遵循此腳本。 % pp -o hello hello.pl或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM