Excel VBA - Arbeitsblatt in neuer Datei ohne Formeln speichern

1

Benötigen Sie Unterstützung, um diesen VBA-Code zu vervollständigen?

Szenario: Ich habe eine Master-Arbeitsmappe, die Daten aus zwei anderen Arbeitsblättern importiert, die aus einem Programm exportiert wurden (um das Kopieren / Einfügen zu speichern). Ich muss dann nur 1 Blatt exportieren und als neue Datei speichern, und der folgende VBA-Code erledigt die Aufgabe perfekt .

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

Was ich einschließen muss, ist die Codierung, um die Formeln zu entfernen (nur Exportwerte) und die bedingte Formatierung aus dem Masterwork-Buch beizubehalten.

Jede Unterstützung wäre sehr dankbar.

GaryW
quelle
Wenn ich nicht den richtigen VBA-Code kenne, der zum Ausführen einer Aktion erforderlich ist, verwende ich den Macro Recorder in Excel. Sie können eine Reihe von Aktionen manuell ausführen und den Code generieren, der für die programmgesteuerten Schritte erforderlich ist. Aus diesem Code kann ich normalerweise herausfinden, was ich brauche, um das fertige Produkt zu schreiben.
Twisty Impersonator

Antworten:

1

Das erste, was mir einfällt, ist, einfach jede Zelle durch ihren Wert zu ersetzen.

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

Wenn Sie eine Tonne Zellen haben, kann dies einige Zeit dauern.

Alternativ können Sie das gesamte Blatt auswählen und die Werte einfügen:

Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues

Beides sollte keine bedingte Formatierung ändern.

Alexis Olson
quelle
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
Valentín Elizondo
quelle
1
Willkommen bei Super User! Können Sie erklären, was Ihr VBA macht?
bertieb