2013-06-24 1 views
0

У меня проблема с преобразованием файла excel в csv. Мой вариант использования - написать макрос, чтобы преобразовать каждый лист книги в файл csv и закрепить их до одного файла. мой код выглядит следующим образом «OriginalWorkbook.Activate » Для количества листов преобразующего каждый в свой собственный CSV файлExcel макрос создает файлы csv из листов книг Окно всплывающего окна

For Counter = SHCOUNT + 1 To Sheets.Count 

    'Export as CSV to the root folder 
    Set wks = ActiveWorkbook.Worksheets(Counter) 
    wks.Copy 'to a new workbook 
    Set newWks = ActiveSheet 
    With newWks 
     fileSaveName = Application.GetSaveAsFilename(newWks.Name, _ 
     fileFilter:="CSV Files (*.csv), *.csv") 
     'ActiveWorkbook.SaveAs (fileSaveName) 
     .SaveAs Filename:=fileSaveName, FileFormat:=xlCSV 
     ZipNAme = newWks.Name 
     If fileSaveName <> False Then 
      'newWks.Delete 
      'MsgBox "Save as " & fileSaveName 
     End If 

     .Parent.Close Savechanges:=False 
    End With 

    ''Add the created CSV file to the ZIP file 
    Set oapp = CreateObject("Shell.Application") 
    oapp.Namespace(FolderName).CopyHere fileSaveName 

Next Counter 

Но сейчас я столкнулся проблемы с этим кодом, у меня есть 20 листов в Excel и для каждого листа, всплывающее окно saveas всплывает, и я нажимаю 20 раз, чтобы выполнить все это.

Я очень новичок в кодировании в VB. Может ли кто-нибудь помочь мне с этим? Мне нужно идти вперед без каких-либо всплывающих окон, поскольку я даю имя файла заранее.

Спасибо, B1

+0

Вы получаете всплывающее окно для каждого файла, потому что вы вызываете 'Application.GetSaveAsFilename' внутри цикла! –

+0

есть альтернативный способ? или решение для этого? –

ответ

0
Sub exportcsv() 
Dim ws As Worksheet 
Dim path As String 

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1) 
For Each ws In Worksheets 
    ws.Copy 
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    ActiveWorkbook.Close False 
Next 
End Sub 

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

 Смежные вопросы

  • Нет связанных вопросов^_^