Excel VBA - lưu bảng tính vào tệp mới mà không có công thức


1

Cần một số hỗ trợ để hoàn thành mã VBA này, tôi đã đưa nó đi xa như kiến ​​thức hạn chế của tôi sẽ giúp tôi.

Kịch bản: Tôi có một sổ làm việc chính lấy dữ liệu từ hai bảng tính khác được xuất từ ​​một chương trình (để lưu bản sao / dán), sau đó tôi chỉ cần xuất 1 tờ và lưu dưới dạng tệp mới và mã VBA bên dưới thực hiện công việc một cách hoàn hảo .

Sub savesheet2()

Application.ScreenUpdating = False
ActiveSheet.Select
ActiveSheet.Copy
ThisFile = Range("A2").Text
Dim fileName As String
fileName = "C:\INTERNAL\ACCOUNTS\" & ThisFile
ActiveSheet.SaveAs fileName:=fileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.ScreenUpdating = True

End Sub

Những gì tôi cần bao gồm là mã hóa để loại bỏ các công thức (chỉ xuất các giá trị) và giữ lại định dạng có điều kiện từ sách tổng thể.

Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao.


Khi tôi không biết mã VBA chính xác cần thiết để hoàn thành một hành động, tôi sử dụng Trình ghi Macro trong Excel. Nó cho phép bạn thực hiện một loạt các hành động theo cách thủ công và tạo mã cần thiết để thực hiện các bước tương tự theo lập trình. Từ mã này, tôi thường có thể tìm ra những gì tôi cần để viết thành phẩm.
Kẻ giả mạo Twisty

Câu trả lời:


1

Điều đầu tiên xuất hiện trong đầu là chỉ cần thay thế mọi ô bằng giá trị của nó.

For Each c In Cells
    c = c.Value
Next c

Nếu bạn có một tấn tế bào, điều này có thể mất một thời gian.

Ngoài ra, bạn có thể chọn toàn bộ trang tính và dán đặc biệt các giá trị:

Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues

Không ai trong số này nên thay đổi bất kỳ định dạng có điều kiện.


0
  Public Sub convertir_fichero(fichero_origen As String)

 Dim nuevo_libro As Workbook
 Dim indice As Integer
 Dim Ruta_Salida As String

 Set nuevo_libro = Workbooks.Add(xlWBATWorksheet)


 Application.CalculateBeforeSave = False
 Application.DisplayAlerts = False

 Workbooks(fichero_origen).Activate
 Ruta_Salida = Application.ActiveWorkbook.Path & "\Salida_aux.xlsx"

 nuevo_libro.SaveAs Ruta_Salida, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges

 For indice = 1 To Workbooks(fichero_origen).Worksheets.Count
    Dim nombre_hoja As String

    nombre_hoja = Workbooks(fichero_origen).Worksheets(indice).Name

    nuevo_libro.ActiveSheet.Name = nombre_hoja

    Workbooks(fichero_origen).Worksheets(nombre_hoja).Activate

    If Workbooks(fichero_origen).Worksheets(nombre_hoja).FilterMode = True Then
       Workbooks(fichero_origen).Worksheets(nombre_hoja).AutoFilter.ShowAllData
    End If
    Cells.Select
    Selection.Copy
    'After:=ActiveSheet
    nuevo_libro.Sheets(nombre_hoja).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    'formato
    Workbooks(fichero_origen).Worksheets(nombre_hoja).Activate
    Cells.Select
    Selection.Copy
    nuevo_libro.Sheets(nombre_hoja).Activate
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    Application.CutCopyMode = False
    If ((indice Mod 5) = 0) Then
      nuevo_libro.SaveAs Ruta_Salida, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
    End If
    If (indice < Workbooks(fichero_origen).Worksheets.Count) Then
      nuevo_libro.Sheets.Add After:=ActiveSheet
    End If
 Next indice

  nuevo_libro.SaveAs Ruta_Salida, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
End Sub

1
Chào mừng bạn đến với Siêu người dùng! Bạn có thể giải thích những gì VBA của bạn làm?
bertieb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.