Здравствуйте уважаемые форумчане. На решение проблемы о пересохранении открытого файла формата *.xlsx в *.csv был создан следующий код:
[vba]
Код
Sub SaveAsCSV_AllOpenedWB_and_AllSheets() ' Application.DisplayAlerts = False For Each wb In Workbooks If Windows(wb.Name).Visible Then For Each sh In ActiveWorkbook.Sheets varFullNewName = wb.Path & "\" & Left(wb.Name, InStrRev(wb.Name, ".") - 1) & "--" & sh.Name & ".csv" sh.Copy ActiveWorkbook.SaveAs Filename:=varFullNewName, FileFormat:=xlCSV, CreateBackup:=False Next sh End If Next wb Application.DisplayAlerts = True End Sub
[/vba] Это немного не то что надо лично мне, поскольку данный код выполняет сохранение всех листов активной книги, тогда как мне надо только пересохранить только сам файл в другом формате. Буду благодарен за подсказку. С уважением.
Здравствуйте уважаемые форумчане. На решение проблемы о пересохранении открытого файла формата *.xlsx в *.csv был создан следующий код:
[vba]
Код
Sub SaveAsCSV_AllOpenedWB_and_AllSheets() ' Application.DisplayAlerts = False For Each wb In Workbooks If Windows(wb.Name).Visible Then For Each sh In ActiveWorkbook.Sheets varFullNewName = wb.Path & "\" & Left(wb.Name, InStrRev(wb.Name, ".") - 1) & "--" & sh.Name & ".csv" sh.Copy ActiveWorkbook.SaveAs Filename:=varFullNewName, FileFormat:=xlCSV, CreateBackup:=False Next sh End If Next wb Application.DisplayAlerts = True End Sub
[/vba] Это немного не то что надо лично мне, поскольку данный код выполняет сохранение всех листов активной книги, тогда как мне надо только пересохранить только сам файл в другом формате. Буду благодарен за подсказку. С уважением.chilli81
Тут суть в том что этот код создает мне три файла в формате название файла_Лист1.csv, название файла_Лист2.csv и название файла_Лист3.csv. Просто я в программировании только копировать умею то прошу помощи где в єтом коде поправить команду чтобы просто пересохраняло файл с другим расширением. Например вот рабочий код, который почему-то работает исключительно в ХР
[vba]
Код
Sub xlsx_csv_1() ' For Each wb In Workbooks If Windows(wb.Name).Visible Then MsgBox wb.Path & "\" & Left(wb.Name, InStrRev(wb.Name, ".") - 1) ActiveWorkbook.SaveAs Filename:=Left(wb.Name, InStrRev(wb.Name, ".") - 1) & ".csv" _ , FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Save End If Next wb End Sub
[/vba] Суть я понимаю но просто элементарно не хватает именно прикладных знаний чтобы что-то сделать. Я по образованию жесткий гуманитарий, хотя моего шефа это интересует почему-то слабо
Тут суть в том что этот код создает мне три файла в формате название файла_Лист1.csv, название файла_Лист2.csv и название файла_Лист3.csv. Просто я в программировании только копировать умею то прошу помощи где в єтом коде поправить команду чтобы просто пересохраняло файл с другим расширением. Например вот рабочий код, который почему-то работает исключительно в ХР
[vba]
Код
Sub xlsx_csv_1() ' For Each wb In Workbooks If Windows(wb.Name).Visible Then MsgBox wb.Path & "\" & Left(wb.Name, InStrRev(wb.Name, ".") - 1) ActiveWorkbook.SaveAs Filename:=Left(wb.Name, InStrRev(wb.Name, ".") - 1) & ".csv" _ , FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Save End If Next wb End Sub
[/vba] Суть я понимаю но просто элементарно не хватает именно прикладных знаний чтобы что-то сделать. Я по образованию жесткий гуманитарий, хотя моего шефа это интересует почему-то слабо chilli81
Вот пожалуйста...Есть у меня таблица Ексель которую мне надо вручную залить в базу данных.... (примеры прикреплю ниже) И надо пересохранить ее в таком же формате, а не чтоб символы разделались запятыми...
Вот пожалуйста...Есть у меня таблица Ексель которую мне надо вручную залить в базу данных.... (примеры прикреплю ниже) И надо пересохранить ее в таком же формате, а не чтоб символы разделались запятыми...chilli81
Sub SaveAs_CSV() Dim fName$ With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = ThisWorkbook.Path & "\" .Filters.Clear .Filters.Add "Файлы Excel ", "*.xls*" .Show If .SelectedItems.Count = 0 Then fName = Empty: Exit Sub Else fName = .SelectedItems(1) End If End With With GetObject(fName) .SaveAs Filename:=Left(.FullName, InStrRev(.FullName, ".") - 1), _ FileFormat:=xlCSV, CreateBackup:=False, local:=True .Close False End With End Sub
[/vba]
[vba]
Код
Sub SaveAs_CSV() Dim fName$ With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = ThisWorkbook.Path & "\" .Filters.Clear .Filters.Add "Файлы Excel ", "*.xls*" .Show If .SelectedItems.Count = 0 Then fName = Empty: Exit Sub Else fName = .SelectedItems(1) End If End With With GetObject(fName) .SaveAs Filename:=Left(.FullName, InStrRev(.FullName, ".") - 1), _ FileFormat:=xlCSV, CreateBackup:=False, local:=True .Close False End With End Sub
Вроде бы нормально, но я тоже уже так пробовал - там плохой источник, слишком много лишнего в usedrange... А бороться с этим в коде неохота... Хотя может чтоб залить и сгодится - если лишние поля база будет игнорировать.
Вроде бы нормально, но я тоже уже так пробовал - там плохой источник, слишком много лишнего в usedrange... А бороться с этим в коде неохота... Хотя может чтоб залить и сгодится - если лишние поля база будет игнорировать.Hugo