繁体   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