【问题标题】:Saving a worksheet into a new workboook but using values instead of the referencing formulas将工作表保存到新工作簿中,但使用值而不是引用公式
【发布时间】:2023-04-01 22:30:02
【问题描述】:

所以我正在尝试创建一个工作簿,该工作簿使用初始数据工作表中的多个引用来自动填充不同工作表中的单元格以生成表单(预先格式化的工作表)。对于其中一个工作表,我需要将其作为自己的 .xlsx 工作簿保存在单独的网络驱动器上。到目前为止,我开发的代码创建了新的工作簿,但单元格仍然包含引用原始工作簿的原始公式。保存到新工作簿时,有没有办法将单元格转换为值?这是我的潜艇。 TIA

Private Sub SaveBidTab1_Click()
'   Saves the BidTab in the Current Year's Bid Tabs Folder in
'   Dave's Snapserver Construction Files

Dim BTFName As String   'this will be the name of the new file name saved in the Bid Tabs Folder
Dim BTFfolder As String 'This is the folder to save the form into
Dim BTFDate As String   'This is the date to choose which year's folder to use
Dim ProjectShortName As String  'This is the short name for the project for the file name
Dim NewBook As Workbook ' This is temp workbook that the new bid tab sheet will be saved as

If Worksheets("BidTab").Range("G12") = "" Then
    ans = MsgBox("This form is not ready to be saved", vbOKOnly, "Bid Tabs")
    Select Case ans
        Case vbOK
        Exit Sub
    End Select
End If

'Requests user to enter in short name for project
Msg = "Enter Project Short Name"
ProjectShortName = InputBox(Msg, "Save As")

' TRIAL is added here until project is compelted.
BTFName = "TRIAL " & Worksheets("Initial Entry").Range("B5") & " " & ProjectShortName & _
    " " & "Bid Tab Results" & " " & Worksheets("BidTab").Range("L5")
' Add in a cancle option to this msgbox
MsgBox BTFName
BTFDate = Year(Now())
BTFfolder = "M:\DotserverD\Daves Snapserver Files Construction Files\Bid Tabs\" & BTFDate _
    & "\County"
    Debug.Print BTFfolder
Set NewBook = Workbooks.Add
ThisWorkbook.Worksheets("BidTab").Copy Before:=NewBook.Sheets(1)

NewBook.SaveAs Filename:=BTFfolder & "\" & BTFName & ".xlsx", FileFormat:=xlOpenXMLWorkbook

End Sub

【问题讨论】:

  • 您的意思是要断开链接吗?见 BreakLink 函数
  • 不,我希望保留这些值并删除公式。
  • 然后粘贴特殊 xlPasteValues。在这里查看相同的问题:stackoverflow.com/questions/23937262/…

标签: vba excel


【解决方案1】:

ThisWorkbook.Worksheets("BidTab").Copy Before:=NewBook.Sheets(1)

把这个放在上面的语句之后:

With NewBook.Sheets(1).UsedRange
    .Value = .Value
End With

这将删除链接并仅保留新工作表中的值。

【讨论】:

  • 谢谢!那效果很好。有没有办法将我在原始工作簿上的两个命令按钮设置为不可见或在保存时将它们全部删除?
  • @Decoy26 欢迎您,很高兴知道它有效。要从工作表中删除控件,您可以跨越工作表的 Shapes 集合并检查其 .nameproperty 并在其上调用 .delete
【解决方案2】:

我在一本类似的书中有这个。您可能可以简化它。

Dim shShape As Shape
    For i = 1 To UBound(sheetNames)
        mSaveWorkbook.Sheets(i).Name = sheetNames(i)
        If mSaveWorkbook.Sheets(i).Shapes.Count > 0 Then
            For Each shShape In mSaveWorkbook.Sheets(i).Shapes
                If shShape.Type = msoFormControl Then
                    shShape.Delete
                End If
            Next shShape
        End If
    Next i
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 2016-02-26
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多