将 vba 转换为 Office-JS

Dav*_*eld 4 excel vba office-js

我目前正在考虑将一些遗留的 vba 代码转换为 Office-js,我只是想就现有代码是否可以轻松传输以及它是否适用于客户端和 Web 版本的 Excel 提供一些建议。

'''
Sub Notes()
Dim mySheet As Worksheet, myOtherSheet As Worksheet, myBook As Workbook 'Define your workbooks and worksheets as variables
Set myBook = Excel.ActiveWorkbook
Set mySheet = myBook.Sheets("Conversions")
Set myOtherSheet = myBook.Sheets("Additional Notes")

Dim i As Integer, j As Integer 'Define a couple integer variables for counting

j = 4 'This variable will keep track of which row we're on in Sheet2 (I'm assuming you want to start on line 28)
For i = 10 To 225 'This is the beginning the the loop which will repeat from 5 to 100 . . .
   If mySheet.Cells(i, 17).Value <> "" Then ' . . . for each digit, it will check if the cell's value is blank. If it isn't then it will . . .
      myOtherSheet.Cells(j, 2).Value = mySheet.Cells(i, 17).Value ' . . . Copy that value into the cell on Sheet2 in the row specified by our "j" variable.
      j = j + 1 'Then we add one to the "j" variable so the next time it copies, we will be on the next available row in Sheet2.
   End If
Next i 'This triggers the end of the loop and moves on to the next value of "i".
End Sub
Sub PDF_Export()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo ErrHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Replace(Replace(ws.Name, " ", ""), ".", "_") _
            & "_" _
            & Format(Now(), "yyyymmdd\_hhmm") _
            & ".pdf"
strFile = ThisWorkbook.Path & "\" & strFile

myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

If myFile <> "False" Then
    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

    MsgBox "PDF file has been created."
End If

ExitHandler:
    Exit Sub
ErrHandler:
    MsgBox "Could not create PDF file"
    Resume ExitHandler
End Sub

Sub Print_SummaryDocument()
'
' Print_Document Macro
'
    Sheets("SFS v2.1.0").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, Collate:=True, _
        IgnorePrintAreas:=False

End Sub
Sub Print_DetailedDocument()
'
' Print_Document Macro
'
    Sheets("Detailed Statement v2.1.0").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Sub Print_Sum()

'Below statement will print 3 copy of the Sheet1 from Page 2 to Page no: 3

Worksheets("SFS v2.1.01").PrintOut From:=1, to:=3, Copies:=1, Preview:=True

End Sub

Sub PrintRange()

Range("A1:Ag257").PrintOut , Preview:=True

End Sub

> '''
Run Code Online (Sandbox Code Playgroud)

如果那些比我更了解的人可以确认代码是多么容易转移到 office-js,那就太棒了(为

Ray*_* Lu 5

是的,您需要在 Office.JS 中重写代码。你可以参考这个文件:https : //docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial

从您的代码示例中,看起来您想导出 PDF 文件,在 office.JS 中,您可以参考 getFileAsync,您可以从https://docs.microsoft.com/en-us/javascript获取有关此 API 用法的更多信息/api/office/office.document?view=office-js#getfileasync-filetype--callback-

附注。你也可以在脚本实验室中尝试你的 Office JS 代码,https://www.myonlinetraininghub.com/script-lab-explore-the-office-javascript-api-learn-to-build-add-ins https://www.myonlinetraininghub.com/script-lab-explore-the-office-javascript-api-learn-to-build-add-ins docs.microsoft.com/en-us/office/dev/add-ins/overview/explore-with-script-lab


Ric*_*ham 1

使用 Office JS 的 Office 加载项是跨平台的,可以在桌面和 Excel Online 上运行。

您需要用 JavaScript 重写代码。我不知道会有多难。看起来您的代码正在打印。Office JS 中没有用于打印的 API。