Как сохранить файл excel с кодировкой vba, не открывая его? Vba сохранить файл как


Сохранить книгу с помощью Excel VBA для конкретной папки

VBA save as Workbook Excel Macro code помогает сохранять файл в определенную папку, это общая задача в процессе автоматизации. Как только вы закончите выполнение реальных вычислений или задач, в конце процедуры мы обычно вызываем процедуру экспорта или сохранения выходного файла в конкретную папку или общий диск. Или в других случаях у вас могут не быть разрешения на сохранение файла в местоположении, чтобы вы могли использовать SaveAs Option для хранения исправленного или обновленного файла.

VBA сохранить как книгу - Решение (ия):

Вы можете использовать метод SaveAs для сохранения файла в определенном месте. Вы можете сохранить с тем же именем и местоположением файла. Или вы можете использовать другое имя файла и местоположение для сохранения файла. Вы также можете установить объект и сохранить файл.

  В другом методе вы используете диалоговое окно «Сохранить». Чтобы пользователь мог выбрать конкретную папку для сохранения файла Excel.

Сохранить книгу в конкретной папке - Примеры:

Сохранить книгу в определенной папке

  В следующем примере показано, как сохранить книгу Excel в специальной папке с помощью метода SaveAs:

Sub ExampleToSaveWorkbook() Workbooks.Add 'Сохранение рабочей книги ActiveWorkbook.SaveAs "C:\WorkbookName.xls" 'OR 'ActiveWorkbook.SaveAs Filename:="C:\WorkbookName1.xls" End Sub
Установите объект и сохраните его

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

Sub ExampleToSaveWorkbookSet() Dim wkb As Workbook 'Добавление новой рабочей книги Set wkb = Workbooks.Add 'Сохранение рабочей книги wkb.SaveAs "C:\WorkbookName.xls" 'OR 'wkb.SaveAs Filename:="C:\WorkbookName1.xls" End Sub
Сохранить книгу в специальной папке с помощью диалогового окна «Сохранить»

  Вы можете сохранить книгу в специальную папку, показывая диалоговое окно «Сохранить» пользователю. Чтобы пользователь мог выбрать нужное место для сохранения файла.

Sub sbSaveExcelDialog() Dim IntialName As String Dim sFileSaveName As Variant IntialName = "Sample Output" sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm") If sFileSaveName <> False Then ActiveWorkbook.SaveAs sFileSaveName End If End Sub
Сохраните книгу в том же месте в макрокоманде (этой) книге

  Вы можете сохранить книгу в том же каталоге макрокоманды, используя свойство ThisWorkbook.Path.

Sub ExampleToSaveWithSamePathDifferentName() Dim sFilename As String sFilename = "WorkbookName.xls" 'You can give a nem to save Workbooks.Add 'Сохранение рабочей книги ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sFilename End Sub
Сохранить книгу

  Вы можете просто сохранить файл без изменения имени файла или имени пути, используя метод «Сохранить».

Sub ExampleToSaveWithSameNameandPath() 'Сохренение рабочей книги ActiveWorkbook.Save End Sub
Примеры файлов

  Вы можете загрузить файл примера и изучить его.ANALYSISTABS – Save Workbook

Перезаписать существующую книгу с помощью VBA

  Сохраняя существующую книгу или новый файл excel с существующим именем, Excel предложит предупредительное сообщение. Он прервет процедуру и попросит пользователя нажать да или нет для перезаписи файла.

Перезаписать существующую книгу с помощью VBA - Решение:

  Вы можете избежать этого, временно отключив оповещения и сохраните книгу с тем же именем, установив свойство Application.DisplayAlerts = False. После того, как вы закончите выполнение задачи, вы должны активировать оповещения приложения, установив свойство TRUE.

Перезаписать существующую книгу с помощью VBA - пример

  Следующий пример покажет вам, как перезаписать файл, отключив оповещения приложения.

Код: sub procedure to over write an excel file Sub ExampleToOverWriteExistingWorkbook() 'Декларация: Объявление переменной Dim wkb As Workbook 'Добавление новой рабочей книги с использованием метода Workbook.Add и установка в wkb Object Set wkb = Workbooks.Add 'Сохранение рабочей книги 'Отключите предупреждения приложения перед сохранением файла Application.DisplayAlerts = False 'Теперь сохраняем файл wkb.SaveAs "C:\WorkbookName.xls" ' change to existng file name 'OR 'wkb.SaveAs Filename:="C:\WorkbookName1.xls"</span> 'Включение предупреждений приложений после сохранения файла Application.DisplayAlerts = True End Sub Инструкции:
  1. Откройте рабочую книгу Excel
  2. Нажмите Alt + F11, чтобы открыть редактор VBA.
  3. Вставьте модуль для меню вставки
  4. Создайте приведенный выше код и вставьте в окно кода
  5. Сохраните файл в виде макросъемки
  6. Нажмите F5, чтобы выполнить

vh10295.rdkd.ru

Excel VBA сохранить как текстовый файл без разделителя

Вы должны разделитель или разделитель для отдельных полей дифференцируемыми.

В подходе ниже приведен код, по которому вы можете выбрать разделитель значений по желанию.

В настоящее время , символ как разделитель по умолчанию.

Заметки о коде ниже:

  • rngRange аргумент: является диапазон источника, который вы хотите экспортировать в качестве отчета в файл формата * .txt.
  • strSeparator: - ваш подходящий разделитель может определить здесь.

...

sub Report CsvExportRange rngRange:=ThisWorkbook.Worksheets("Sheet1").Range("tblTaxRep"), _ strFileName:="C:\" & ".txt", _ strCharset:="UTF-8", strSeparator:=",", strRowEnd:=vbCrLf, NVC:=False End Sub Sub CsvExportRange(rngRange As Object, strFileName As String, strCharset, strSeparator As String, strRowEnd As String, NVC As Boolean) 'NVC: _ Null Value Control (If cell contain Null value, suppose reached end of range), d: delimiter Dim rngRow As Range Dim objStream As Object Dim i, lngFR, lngLR As Long 'lngFR: First Row, lngLR: Last Row lngFR = rngRange.SpecialCells(xlCellTypeVisible).Rows(1).row - rngRange.Rows(1).row + 1 lngLR = rngRange.End(xlDown).row - rngRange.Rows(1).row + 1 Set objStream = CreateObject("ADODB.Stream") objStream.Type = 2 objStream.Charset = strCharset objStream.Open For i = lngFR To lngLR If Not (rngRange.Rows(i).EntireRow.Hidden) Then If IIf(NVC, (Cells(i + rngRange.Rows(1).row - 1, _ rngRange.SpecialCells(xlCellTypeVisible).Columns(1).column).Value = vbNullString), False) Then Exit For objStream.WriteText CsvFormatRow(rngRange.Rows(i), strSeparator, strRowEnd) End If Next i objStream.SaveToFile strFileName, 2 objStream.Close End Sub 'CsvExportRange Function CsvFormatRow(rngRow As Variant, strSeparator As String, strRowEnd As String) As String Dim arrCsvRow() As String ReDim arrCsvRow(rngRow.SpecialCells(xlCellTypeVisible).Cells.Count - 1) Dim rngCell As Range Dim lngIndex As Long lngIndex = 0 For Each rngCell In rngRow.SpecialCells(xlCellTypeVisible).Cells arrCsvRow(lngIndex) = CsvFormatString(rngCell.Value, strSeparator) lngIndex = lngIndex + 1 Next rngCell CsvFormatRow = Join(arrCsvRow, strSeparator) & strRowEnd End Function 'CsvFormatRow Function CsvFormatString(strRaw, strSeparator As String) As String Dim boolNeedsDelimiting As Boolean Dim strDelimiter, strDelimiterEscaped As String strDelimiter = """" strDelimiterEscaped = strDelimiter & strDelimiter boolNeedsDelimiting = InStr(1, strRaw, strDelimiter) > 0 _ Or InStr(1, strRaw, chr(10)) > 0 _ Or InStr(1, strRaw, strSeparator) > 0 CsvFormatString = strRaw If boolNeedsDelimiting Then CsvFormatString = strDelimiter & _ Replace(strRaw, strDelimiter, strDelimiterEscaped) & _ strDelimiter End If End Function 'CsvFormatString

stackoverrun.com

Как сохранить файл excel с кодировкой vba, не открывая его?

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

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

Как это работает следующим образом:

  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

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

stackoverrun.com

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

У меня есть имя файла «ABC XXXXXX XXX XXXX Report Без XXXXXX 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

excel vba save folders 70

stackoverrun.com

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

Я добавил кнопку на листе excel и добавил следующие коды в окне vba этой кнопки. Теперь, когда я нажимаю эту кнопку, то есть, когда я запускаю коды, он сохраняет лист Excel в формате pdf, имя которого требуется для ячейки H8 и сохраняет его в форматах M: \. Кроме того, он также сохраняет один и тот же лист Excel в формате .xlsx в формате M:\formats\excels. Но здесь проблема заключается в том, что когда я запускаю коды, они закрывают лист excel, в который я добавил коды, и открывает файл, который сохраняется кодами. Например, я сделал abc.xlsm excel sheet и добавил коды в окне vb, теперь xyz записывается в ячейку no h8 в листе abc.xlsm excel, теперь, когда я буду запускать коды, он закрывает abc.xlsm, и все коды показаны в xyz.xlsx excel sheet. Я хочу, чтобы он сохранял файл в формате xlsx в требуемом месте. Он не должен закрывать базовый файл (который является abc.xlsx в приведенном выше примере) и не должен открывать сохраненный файл (который является xyz.xlsx в приведенном выше примере). Кроме того, я хочу, чтобы сохраненный файл (xyz.xlsx в приведенном выше примере) не должен содержать никакого кодирования vba. Другими словами, он должен быть похож на резервную копию базового файла (который в приведенном выше примере является abc.xlsx). Пожалуйста, помогите мне изменить эти коды к ним, как я хочу. Я буду вам очень благодарен. Спасибо

Sub ExportAPDF_and_SaveAsXLSX() Dim wsThisWorkSheet As Worksheet Dim objFileSystemObject As New Scripting.FileSystemObject Dim strFileName As String Dim strBasePath As String 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." strBasePath = "M:\formats\excels\" strFileName = Range("H8") Application.DisplayAlerts = False strFileName = objFileSystemObject.GetBaseName(strFileName) & ".xlsx" wsThisWorkSheet.SaveAs Filename:=strBasePath & strFileName, FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = False MsgBox "Workbook now saved in XLSX format." exitHandler: Exit Sub errHandler: MsgBox "Could not create PDF file" Resume exitHandler End Sub задан ramji 29 сент. '15 в 12:51 источник поделиться

qaru.site

vba - VBA Сохранить файл как

Интересно, может ли кто-нибудь помочь мне.

Я использую приведенный ниже код для динамического создания списка файлов из данной папки.

В столбце E для каждой строки списка есть ссылка 'Click Here to Open', которая позволяет пользователю открывать каждый файл.

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

Public Sub ListFilesInFolder(SourceFolder As Scripting.folder, IncludeSubfolders As Boolean) Dim LastRow As Long On Error Resume Next For Each FileItem In SourceFolder.Files ' display file properties Cells(iRow, 3).Formula = iRow - 12 Cells(iRow, 4).Formula = FileItem.Name Cells(iRow, 5).Select Selection.Hyperlinks.Add Anchor:=Selection, Address:= _ FileItem.Path, TextToDisplay:="Click Here to Open" iRow = iRow + 1 ' next row number With ActiveSheet LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row End With For Each Cell In Range("C13:E" & LastRow) ''change range accordingly If Cell.Row Mod 2 = 1 Then ''highlights row 2,4,6 etc|= 0 highlights 1,3,5 Cell.Interior.Color = RGB(232, 232, 232) ''color to preference Else Cell.Interior.Color = RGB(141, 180, 226) 'color to preference or remove End If Next Cell Next FileItem If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder, True Next SubFolder End If Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub

Я попытался использовать команду "Application.Dialogs(xlDialogSaveAs).Show" в каждой строке кода, но я не могу заставить это работать, потому что все, что он делает, это попросить пользователя сохранить файл по мере его создания.

Я просто задавался вопросом, может ли кто-нибудь посмотреть на это, и сообщите мне, где я ошибся.

Большое спасибо и добрые пожелания

Крис

qaru.site