0

我有一个脚本,它打开一个外部文件来执行一个脚本,完成脚本后,它保存为一个 xlsb 文件。该代码非常适合从 xlsb 文件保存到 xlsb 文件。但是因为我想对原始文件有一些安全性,所以我希望原始的 xlsb 文件是 xltm 文件。我对其进行了另存为脚本的调整,并将其作为文件本身的单独例程进行了测试。它完美地工作。

现在我将例程添加到外部脚本文件中,但是当我执行脚本时,Excel 冻结并且根本没有出现“另存为”屏幕。我希望外部脚本有一些其他外部引用才能正常工作,但我不知道如何调整我的脚本。

这是原始文件的代码:

Option Explicit
Sub vernieuwalles()
Dim myTemplate As String: myTemplate = ActiveWorkbook.Name
Dim myTool As String: myTool = "refresh_segment_template.xlsm"

  Application.ScreenUpdating = False

  Workbooks.Open GetPath & myTool
  Application.Run myTool & "!vernieuwalles", myTemplate

  Call Windows(myTool).Close(False)

  Application.ScreenUpdating = True

End Sub
Private Function GetPath() As String
Dim myPosition As Integer
Dim myPath As String: myPath = ActiveWorkbook.Path

  myPosition = InStr(StrReverse(myPath), "\") - 1
  myPosition = Len(myPath) - myPosition

  GetPath = Mid(myPath, 1, myPosition - 1) & "\XLAM\"

End Function

它是指要打开和执行的外部脚本文件。

外部文件有这个脚本(我只将保存粘贴为脚本的一部分):

Option Explicit

Dim aantalrijen As Long

Const SheetSchaduwblad As String = "schaduwblad"
Sub vernieuwalles(mytemplate As String)

  Windows(mytemplate).Activate

  On Error GoTo Err_

  Application.StatusBar = "Bezig met vernieuwen"

  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual

'  Call SheetOpschonen

  Call datawissen
  Call dataplaatsen
  Call kolomtitels
  Call toevoegen
  Call maaktabel
  Call refreshpivots

Exit_:
  Application.StatusBar = ""
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
  Exit Sub

Err_:
  Call MsgBox(Err.Number & vbCrLf & Err.Description)
  Resume Exit_

Application.Calculation = xlCalculationAutomatic

End Sub

Sub refreshpivots()
Dim workbook_Name As Variant
Dim location As String
Dim workbookdirectory As String
Dim activewb As String

ActiveWorkbook.RefreshAll

activewb = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)

workbookdirectory = "M:\Commercie\Marktdata\IRi\Segment Ontwikkeling\"

workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb", InitialFileName:=workbookdirectory & activewb)

If workbook_Name = False Then

ActiveWorkbook.SaveAs filename:=activewb, FileFormat:=50

End If

但是当我从原始文件执行脚本时,excel 会冻结,正如所指出的那样。应该更改此代码以使用外部文件以及从 xltm 保存到 xlsb 脚本?

正如所指出的:另存为脚本是脚本中唯一更改的内容,而 xlsb 到 xltm 扩展名更改是原始文件 中唯一更改的内容。

4

0 回答 0