2017-01-18 85 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」。

我希望這會有所幫助。

相關問題