2017-01-18 51 views
-2

是否存在代码来保存每小时从sheet1中的A1:B10到CSV文件的数据?将数据从Excel工作表自动保存到CSV文件的代码

+0

我尝试了很多我在互联网上找到的代码,但是我没有成功。我知道你对我的期望越来越高,但我对VBA感到不太舒服。我看到这个,但这不是基于时间的http://stackoverflow.com/questions/37037934/excel-macro-to-export-worksheet-as-csv-file-without-leaving-my-current-excelsh – BertG3

+0

请阅读SO上有关[如何提问](http://stackoverflow.com/help/how-to-ask)的帮助中心文章。 SO不在这里为你做你的工作,只是为了帮助你解决特定的编程错误。单行对于SO来说不是一个恰当的问题。 – Taelsin

+0

好吧,我很抱歉。感谢您的回答。我可以编程,但不能在VBA中编程。我需要fp雇人来帮助我 – BertG3

回答

1

虽然这可以在许多不同的方式来完成,这是我会怎么做:

1)增加以下子到一个新的文件。让我们把它称为“auto.xlsb”

Sub SaveRangeToCSV() 

    Dim rng As Range 
    Dim originWB As Workbook 
    Dim originWS As Worksheet 
    Dim newBook As Workbook 
    Dim newBookWS As Worksheet 

    'Open the file you want to copy the range from 
    Set originWB = Workbooks.Open("path_to_file_that_contains_the_range_you_want_to_copy.xlsx") 
    Set originWS = ThisWorkbook.Sheets("name_of_the_sheet_where_the_range_is") 
    Set rng = originWS.Range("A1:B10") 

    'Add new workbook (csv file) 
    Workbooks.Add 
    Set newBook = ActiveWorkbook 
    Set newBookWS = newBook.Sheets(1) 

    'Copy range from origin to destination (csv file) 
    rng.Copy Destination:=newBookWS.Range("A1") 

    'Save csv file 
    newBook.SaveAs Filename:=ThisWorkbook.Path & "\output.csv" 

End Sub 

如果你想避免output.csv每10分钟被改写,你可以,例如,当前日期时间添加到文件名是这样的:

'Save csv file 
newBook.SaveAs Filename:=ThisWorkbook.Path & "\output_" & Replace(Replace(Replace(Now, "/", ""), ":", ""), " ", "") & ".csv" 

2)添加该代码Workbook_Open子(点击的ThisWorkbook片在VBA IDE,并选择工作簿,然后从下拉在auto.xlsb开放),并保存:

Private Sub Workbook_Open() 

    Call Module1.SaveRangeToCSV 

End Sub 

每次双人间单击打开fi le,SaveRangeToCSV将被触发,并因此创建csv。

3)自动执行这个文件真的取决于你的喜好和你正在操作的操作系统。我假设你在Windows上,所以最简单的方法是在Windows的Task Scheduler中创建一个任务,每10分钟运行一次“auto.xlsb”。

我希望这会有所帮助。

相关问题