1

Нужна некоторая помощь для завершения этого кода VBA, я взял его настолько, насколько мои ограниченные знания дадут мне.

Сценарий: у меня есть основная рабочая книга, которая извлекает данные из двух других электронных таблиц, экспортированных из программы (для сохранения копирования / вставки), затем мне нужно экспортировать только 1 лист и сохранить как новый файл, а приведенный ниже код VBA отлично справляется со своей задачей. ,

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

Мне нужно включить кодирование для удаления формул (только экспортные значения) и сохранения условного форматирования из книги мастерских.

Будем очень благодарны любой помощи.

2 ответа2

1

Первое, что приходит на ум, - это просто заменить каждую ячейку ее значением.

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

Если у вас есть тонна клеток, это может занять некоторое время.

Кроме того, вы можете выбрать весь лист и вставить специальные значения:

Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues

Ни один из них не должен изменять какое-либо условное форматирование.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .