在宏中传递变量args时的语法错误

问题描述 投票:0回答:1

我有一个用于libreoffice的宏,它带有2个参数。

  1. 文件路径
  2. 是要查找的工作表名称的变量args。

迭代与第一个arg有关的文档,并获取与第一个变量arg匹配的工作表。然后,我将该工作表转换为CSV。



Sub ExportToCsv(URL as String, ParamArray sheetNames() As Variant)
  Dim saveParams(1) as New com.sun.star.beans.PropertyValue
  saveParams(0).Name = "FilterName"
  saveParams(0).Value = "Text - txt - csv (StarCalc)"
  saveParams(1).Name = "FilterOptions"
  saveParams(1).Value = "44,34,0,1,1" ' 44=comma, 34=double-quote

  GlobalScope.BasicLibraries.loadLibrary("Tools")
  URL = ConvertToURL(URL)
  document = StarDesktop.loadComponentFromUrl(URL, "_blank", 0,  Array())

  baseName = Tools.Strings.GetFileNameWithoutExtension(document.GetURL(), "/")
  directory = Tools.Strings.DirectoryNameoutofPath(document.GetURL(), "/")

  sheets = document.Sheets
  sheetCount = sheets.Count
  Dim x as Integer
  Dim requiredSheetIndex as Integer
  For x = 0 to sheetCount -1
    sheet = sheets.getByIndex(x)
    sheet.isVisible = True
    For i = LBound(sheetNames) To UBound(sheetNames)
      If StrComp(sheet.Name, sheetNames(i), vbTextCompare) = 0 Then
        requiredSheetIndex = x
      End If
    Next
  Next

  currentSheet = document.GetCurrentController.GetActiveSheet()
  sheet = sheets(requiredSheetIndex)
  document.GetCurrentController.SetActiveSheet(sheet)
  filename = directory + "/" + baseName + ".csv"
  fileURL = convertToURL(Filename)
  document.StoreToURL(fileURL, saveParams())
  document.close(True)
End Sub

例如ExportToCsv(<path>, 'Data')。假设文档有4张纸,其中第三张纸为DATA,则该纸页应转换为CSV。

[以前,我曾经将工作表idnex直接提供给宏,并且效果很好。但是需求发生了变化,我必须传递一组可能的名称以进行匹配。因此是变量args。

但是现在我收到语法错误(附有屏幕截图)。我不明白这里出了什么问题。

Error screenshot

vba libreoffice
1个回答
0
投票

我相信它在抱怨ParamArray关键字。经过一番挖掘,我发现您需要包括:

© www.soinside.com 2019 - 2024. All rights reserved.