Excel VBA: сохранение данных / файлов в другой формат без макроса. Excel vba сохранить файл


VBA excel – Как сохранить файл saveas без сохранения первого файла MS Excel онлайн

У меня есть книга с именем sth_A, где A для сегодняшней даты в формате dd-mm-yyyy. Почти каждый день я открываю эту книгу и вношу изменения, а затем обновляю имя файла с сегодняшней датой ( A ).

Поэтому я создал событие Workbook_BeforeClose с намерением записать в нем некоторый код, который автоматически переименовал бы мой файл при каждом закрытии файла. Я использовал метод Workbook.SaveAs , но это также сохраняет старый файл.

Есть ли способ переименовать открытый файл или сохранить без сохранения оригинала или другого aproach, который будет делать то, что я хочу, элегантным способом?

код:

Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.SaveAs "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False End Sub

также:

Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.SaveAs ThisWorkbook.path & "/sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False End Sub

PS Я хочу, чтобы первый файл удалялся / перезаписывался в любом случае. Не только в том случае, если оно имеет одно и то же имя с новым.

Solutions Collecting From Web of "VBA excel – Как сохранить файл saveas без сохранения первого файла"

Сохраните свою книгу и Kill старый (в основном, что сказал @Canute).

Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim sOldName As String sOldName = ThisWorkbook.FullName ThisWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & _ "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm", FileFormat:=52, CreateBackup:=False Kill sOldName End Sub

Если вы хотите сделать это в случае закрытия книги,

  1. Во-первых, сохраните полное имя открытых книг в переменной. (Скажем, oldWorkbook)
  2. Сделайте сохранение, как в открытой книге, и добавьте метку даты (это ваша новая книга)
  3. Удалите книгу, в которой вы ранее сохраняли путь в переменной oldWorkbook.

Надеюсь это поможет.

Добавить отключить оповещение.

Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False ThisWorkbook.SaveAs "sth" & Format(Date, "dd-mm-yyyy") & ".xlsm" End Sub

excel.bilee.com

Excel VBA Сохранить как файл с разделителями табуляции MS Excel онлайн

У меня есть код, который сохраняет активный рабочий лист в виде текстового файла с разделителями табуляции, однако данные ячейки, которые имеют запятую в них, экспортируются с кавычками, например

Добавив это: я только что узнал, что если я снова сохраню файл, он удалит все «». Можно ли добавить дополнительный код в код?

Я решил это! Поскольку кавычки исчезают, когда вы сохраняете их вручную в виде файла с разделителями, но не при использовании

ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & filename, FileFormat:=xlText, CreateBackup:=False

Я добавил еще одно сохранение после вышеупомянутого, но на этот раз, используя штрихи sendkey, чтобы имитировать ручной метод.

ActiveWorkbook.SaveAs fil, FileFormat: = _ xlText

SendKeys "^{F4}" SendKeys "{ENTER}" SendKeys "{ENTER}"

Согласно FileFormat Property, вы можете выбрать следующие форматы:

xlCSV xlCSVMac xlCSVMSDOS xlCSVWindows

Почему вы не выбираете один из форматов разделенных запятыми?

Попробуйте xlCSV .

Это вариация. Некоторый код, который я использовал для сохранения обычного файла xlsb или файла xls *, может быть использован для многих разных файлов.

Sub SaveAsTDV() ' ' Easy way to export to Tab Deliminated Values ' By DeLaguna ' v17.05.10.15.06 ' Dim BaseFolder As String Dim LitProg As String Dim Path As String Dim Extn As String BaseFolder = "YourBase Folder\" FileName = "FileName" 'File name with no Extension. Extn = ".txt" 'If choosing somthing other than xlText you may change this. Application.DisplayAlerts = False 'Auto Yes to save ChDir BaseFolder ActiveWorkbook.SaveAs Filename:= BaseFolder & FileName & Extn, _ FileFormat:=xlText, CreateBackup:=True 'xlText will save as Tab Deliminated text Application.DisplayAlerts = True ' Reverts to Excel Default showing popup messages for input. End Sub

Надеюсь, это поможет кому-то сообщить, если я сделал какие-либо ошибки, я должен был отредактировать конфиденциальную информацию.

excel.bilee.com

Как сохранить файл excel с помощью vba-кодирования, не открывая его? MS Excel онлайн

Вот код с двумя небольшими изменениями. У обоих новых наборов строк есть комментарий «Новый» перед ними.

Также просто немного подбирал процедуру обработки ошибок.

Как это работает:

  1. Сохраните имя текущей книги в переменной 'strMasterWorkbookFilename'

  2. Файл PDF создается путем «экспорта» рабочего листа.

  3. Рабочий лист Excel затем сохраняется как XLSX. Это эффективно «закрывает» оригинальную книгу.

3.1 Кнопка («Кнопка 8») удаляется с нового рабочего листа XLSX, и рабочая книга сохраняется снова.

  1. Затем код снова открывает исходную книгу ('strMasterWorkbookFilename') и закрывает текущую книгу.

Примечания. Сохранение, поскольку XLSX удалит код макроса из сохраненного файла. Макрос останется в главном «главном» файле.

Sub ExportAPDF_and_SaveAsXLSX() Dim wsThisWorkSheet As Worksheet Dim objFileSystemObject As New Scripting.FileSystemObject Dim strFileName As String Dim strBasePath As String ' NEW Dim strMasterWorkbookFilename As String strMasterWorkbookFilename = ThisWorkbook.FullName strBasePath = "M:\formats\" strFileName = Range("H8") On Error GoTo errHandler Set wsThisWorkSheet = ActiveSheet wsThisWorkSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=strBasePath & strFileName, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False MsgBox "PDF file has been created." Application.DisplayAlerts = False strFileName = objFileSystemObject.GetBaseName(strFileName) & ".xlsx" wsThisWorkSheet.SaveAs Filename:=strBasePath & strFileName, FileFormat:=xlOpenXMLWorkbook wsThisWorkSheet.Shapes("Button 8").Delete ActiveWorkbook.Save Application.DisplayAlerts = False MsgBox "Workbook now saved in XLSX format." ' NEW Workbooks.Open strMasterWorkbookFilename Workbooks(strFileName).Close SaveChanges:=False exitHandler: Exit Sub errHandler: MsgBox "Error Saving file. The error is " & vbCrLf & Chr(34) & Err.Description & Chr(34) Resume exitHandler End Sub

Спасибо, что опубликовали это как новый вопрос. Если бы я перенял модификацию исходного кода в первом вопросе, это не помогло бы кому-либо еще прочитать ваш оригинальный пост.

excel.bilee.com

сохранение данных / файлов в другой формат без макроса MS Excel онлайн

У меня есть эта пользовательская форма

Это полностью fuctioning, но я хочу добавить функцию, которая отправляет файл как .xlsx или .txt, чтобы я мог удалить макрос из файла.

Я искал интернет в течение нескольких дней и приступил к процедуре, которую мне нужно сделать для 3-го процесса, чтобы сохранить его в другом формате. Процесс, который я придумал, приведен ниже:

1. .SaveCopyAs

Копировать (имя файла). (Тот же формат)

  1. .Open

    Существующий файл

  2. .SaveAs

    (FileName). (Любой формат)

И удалите файл SaveCopyAs, чтобы избежать избыточности. Или уловите временный файл в файл SaveAs другого формата? Каждый вход должен быть сохранен после нажатия кнопки ok и перезаписать существующий файл.

Может ли кто-нибудь сказать мне, правильно ли я подхожу к моей проблеме? Благодарю.

Solutions Collecting From Web of "Excel VBA: сохранение данных / файлов в другой формат без макроса"

У меня была аналогичная проблема, мое решение заключалось в копировании листов в новую книгу, затем их переименование и сохранение этой книги с определенным именем:

ans = MsgBox("Would you like to export the Report?", vbYesNo) Select Case ans Case vbYes FPath = "C:\...\...\... Daily Report" FName = "Report" & ".xlsx" Set NewBook = Workbooks.Add ThisWorkbook.Sheets("Sheet2").Copy Before:=NewBook.Sheets(1) ThisWorkbook.Sheets("Sheet3").Copy Before:=NewBook.Sheets(1) Application.DisplayAlerts = False 'NewBook.Sheets("Sheet1").Delete to delete the first empty sheet on the new workbook If Dir(FPath & "\" & FName) <> "" Then MsgBox "File " & FPath & "\" & FName & " already exists" Else NewBook.SaveAs Filename:=FPath & "\" & FName End If NewBook.Close False CurrentReport = FPath & "\" & FName Case vbNo Exit Sub End Select

Или добавлять данные в текстовый файл каждый раз, когда пользователь нажимает «ОК»:

Sub VBA_to_append_existing_text_file() Dim strFile_Path As String strFile_Path = "C:\temp\test.txt" 'Change as per your test folder and exiting file path to append it. Open strFile_Path For Append As #1 Write #1, "This is my sample text" ' add entered data here Close #1 End Sub

excel.bilee.com

VBA Excel Сохранить новый файл как дату активного файла MS Excel онлайн

У меня есть имя файла "ABC XXXXXX XXX XXXX Report без XXX-XXX XXXXXXX Найдено 2017_11_01_071549"

Мой текущий код VBA разбивает листы и сохраняет каждый лист в качестве новой книги. Мне нужно, чтобы дата книги была такой же, как и исходная книга. Пример сверху 2017_11_01. В настоящее время сохраняется дата NAME_Today.

Мне также нужно указать папку ее сохранения на дату исходного файла. Пример 2017_11_01. Код в настоящее время сохраняется как «Книга».

Ниже приведен код. Я только запускаю: Sub OpenLatestFile ()

Sub SaveShtsAsBook() ' ' SaveShtsAsBook Macro ' Splits out the sheets and saves them to their own file with date appended ' Dim ldate As String Dim SheetName1 As String Dim ParentFolder As String ldate = Format(Now(), "yyyy-mm-dd") Dim Sheet As Worksheet, SheetName$, MyFilePath$, N& ParentFolder = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 1) ParentFolder = Right(ParentFolder, 10) MyFilePath$ = ActiveWorkbook.Path & "\" & ParentFolder & "\" With Application .ScreenUpdating = False .DisplayAlerts = False ' End With On Error Resume Next '<< a folder exists 'need to change variable to the date here MkDir MyFilePath '<< create a folder For N = 2 To Sheets.Count Sheets(N).Activate SheetName = ActiveSheet.Name Cells.Copy SheetName1 = Range(A1).Value2 & ldate Workbooks.Add (xlWBATWorksheet) With ActiveWorkbook With .ActiveSheet .Paste .Name = SheetName [A1].Select End With tempstr = Cells(1, 1).Value2 openingParen = InStr(tempstr, "(") closingParen = InStr(tempstr, ")") SheetName1 = Mid(tempstr, openingParen + 1, closingParen - openingParen - 1) & "_" & ldate 'save book in this folder .SaveAs Filename:=MyFilePath & SheetName1 & ".xls" .Close SaveChanges:=True End With .CutCopyMode = False Next End With Sheet1.Activate ' End Sub Sub OpenLatestFile() ' ' OpenLatestFile Macro ' Opens the latest file specified in the specified folder ' 'Declare the variables Dim MyPath As String Dim MyFile As String Dim LatestFile As String Dim ArchivePath As String Dim LatestDate As Date Dim LMD As Date 'Specify the path to the folder 'MyPath = "c:\temp\excel" 'Make sure that the path ends in a backslash If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" 'Get the first Excel file from the folder MyFile = Dir(MyPath & "*.xls", vbNormal) 'If no files were found, exit the sub If Len(MyFile) = 0 Then MsgBox "No files were found...", vbExclamation Exit Sub End If 'Loop through each Excel file in the folder Do While Len(MyFile) > 0 'Assign the date/time of the current file to a variable LMD = FileDateTime(MyPath & MyFile) 'If the date/time of the current file is greater than the latest 'recorded date, assign its filename and date/time to variables If LMD > LatestDate Then LatestFile = MyFile LatestDate = LMD End If 'Get the next Excel file from the folder MyFile = Dir Loop 'Open the latest file Workbooks.Open MyPath & LatestFile Call SaveShtsAsBook Application.Goto Reference:="OpenLatestFile" End Sub
Solutions Collecting From Web of "VBA Excel Сохранить новый файл как дату активного файла"

excel.bilee.com

VBA сохранить файл, используя другую книгу MS Excel онлайн

Я новичок в VBA, и до сих пор я был настолько доволен, что у меня есть кое-что, о чем меня спрашивали, что я не справляюсь и еще не научился.

Я даю некоторую информацию, чтобы дать вам лучшее представление о моей ситуации и, надеюсь, понять, что я делаю.

Я делаю следующее: я использую мастер-файл, который открывает две книги, первая – это данные, которые необходимо очистить и подготовить для заполнения второй книги, которая является шаблоном (.csv), который будет загружен в SAP.

Идея состоит в том, чтобы иметь все коды в главном файле, так что, нажимая его кнопки, все необходимые действия могут быть завершены, но я не могу завершить последнюю часть, которая сохраняет файл как конкретное имя, которое я хочу, используя путь в главном файле файл. Это вызывает у меня ошибку: это то, что у меня есть:

'Pasting Data in CVC Template Workbooks("CVC_Weekly AMS.csv").Activate Range("E3").Select ActiveSheet.Paste 'Saving Data as: If Range("B4") = "C:\" Then path = Range("B4") Else path = Range("B4") + "\" End If filename = InputBox("Type in the name to save this file - Recommended name CVC_Weekly AMS Current Date ") ActiveWorkbook.SaveAs path & filename, FileFormat:=6 '6 .csv format

Кажется, что код указывает на использование диапазона в файле шаблона вместо использования основного файла, дело в том, что если я добавлю еще один код, такой как окна (мастер-файл) или книги (мастер-файл) .activate, он сохраняет мастер-файл используя имя, которое я ввел в поле ввода.

Может кто-нибудь дать мне руку с этим? это меня расстраивает!

Solutions Collecting From Web of "VBA сохранить файл, используя другую книгу"

Не зная, что вы копируете.

Этот код может направить вас в правильном направлении.

Sub Button1_Click() Dim wb As Workbook Dim bk As Workbook Dim ws As Worksheet Dim sh As Worksheet Dim ShRng As Range Set wb = ThisWorkbook Set bk = Workbooks("CVC_Weekly AMS.csv") Set ws = wb.Sheets("Sheet1") Set sh = bk.Sheets("Sheet1") Set ShRng = sh.Range("E3") ws.Range("A1").Copy ShRng If ws.Range("B4") = "C:\" Then Path = ws.Range("B4") Else Path = ws.Range("B4") + "\" End If End Sub

excel.bilee.com