复制excel公式,而无需在vb.net中引用以前的工作表

我现在有它从文件A复制整个工作表到文件B.一些工作表只需要复制值,没有公式。 有一个特定的工作表,我需要与公式一起复制格式,但我不想公式引用原始文件。 我希望它引用新文件中的工作表。我怎样才能复制工作表/公式,而不是引用原始文件。

下面我有代码复制一个工作表,然后用一个工作表的值replace公式。

xlWorksheetSource = xlWorkbookSource.Sheets(sheet.Name) xlWorksheetSource.Copy(After:=xlWorkbookDestination.Worksheets(xlWorkbookDestination.Worksheets.Count)) xlWorkDestSource = xlWorkbookDestination.Worksheets(xlWorkbookDestination.Worksheets.Count) ws = xlWorkDestSource With ws.UsedRange .Copy() .PasteSpecial(Paste:=XlPasteType.xlPasteValues, _ Operation:=XlPasteSpecialOperation.xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False) xlApp.CutCopyMode = False End With 

尝试解决schemepasteformulas时出错

  .Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Me.Range("BE4")) Is Nothing Then BE4 = Target.Value If BE4 = "X" Then Worksheets("Invoice 2").Visible = xlSheetVisible Exit Sub End If If BE4 = "" Then Worksheets("Invoice 2").Visible = xlSheetVeryHidden Exit Sub End If 

万一

将PasteSpecial的第一个参数值更改为xlPasteFormulas

 .PasteSpecial(Paste:=XlPasteType.xlPasteFormulas, _ Operation:=XlPasteSpecialOperation.xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False) xlApp.CutCopyMode = False 

这里是VBA中的一种方法,希望你可以在.Net中轻松转换,我在这台机器上没有VisualStudio,所以不能写VB.Net。 另外我不太擅长VB.Net

你首先加载一个数组中的所有公式(它也会加载值,如果你有混合的单元格),那么在数组中只需更新工作表名称(或者wb名称或任何你想要的),然后将数组转储到目的地。 然后再次复制并粘贴专用格式。

 Sub test() Dim arr Dim strSheetFrom As String Dim strSheetTo As String Dim lctrRow As Long Dim lctrCol As Long strSheetFrom = "Sheet3" strSheetTo = "Sheet2" '/ First: Update your formulas in array and simply dump them. arr = Sheet2.UsedRange.Formula For lctrRow = LBound(arr, 1) To UBound(arr, 1) For lctrCol = LBound(arr, 2) To UBound(arr, 2) arr(lctrRow, lctrCol) = Replace(arr(lctrRow, lctrCol), strSheetFrom, strSheetTo) Next Next Sheet1.Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr '/ Now formats Sheet2.UsedRange.Copy Sheet1.Cells(1, 1).PasteSpecial xlPasteFormats Application.CutCopyMode = False End Sub