目錄
- 一. 需求
- 二. 宏代碼
- 三. 添加按鈕
一. 需求
?有如下表格,現在想在Excel中添加一個按鈕
- 點擊按鈕之后,讀取該表格中的數據,生成csv文件
- 將csv文件輸出到和Excel同級目錄
二. 宏代碼
Application.PathSeparator
:路徑分隔符CreateObject("ADODB.Stream")
:UTF-8
文本流.Range()
:指定單元格對象.Range("B3").End(xlDown).Row
:單元格 B3 開始,向下查找,找到最后一個【連續非空】單元格的行號- 💥注意:一定要是
連續非空
,如果中間有空格,最后的行號會中斷在空格處。
- 💥注意:一定要是
Private Sub Create_CSV_Click()Dim stream As ObjectDim ws As WorksheetDim lineInfo As String' 改行Const adWriteLine = 1' 覆蓋模式Const adSaveCreateOverWrite = 2' 設置目標工作表Set ws = ThisWorkbook.Sheets("SHOP_INFO")' 生成文件名Dim fileName As String: fileName = ThisWorkbook.Path & Application.PathSeparator & ws.Range("A1").Value' 數據讀取開始行Const startLine = 4' 計算數據讀取終了行: 單元格 B3 開始,向下查找,找到最后一個【連續非空】單元格的行號Dim endLine As Long: endLine = ws.Range("B3").End(xlDown).Row' =====================================================================================================' 創建 UTF-8 文本流Set stream = CreateObject("ADODB.Stream")With stream.Charset = "UTF-8"' 使用LF換行符 .LineSeparator = -1 .Open' 逐行寫入 CSV 數據For i = startLine To endLine' 一行csv數據lineInfo = """" & ws.Range("B" & i).Value & """," & _"""" & ws.Range("C" & i).Value & """," & _"""" & ws.Range("D" & i).Value & """," & _"""" & ws.Range("E" & i).Value & """"' 將一行csv數據寫入文件中.WriteText lineInfo, adWriteLineNext i' 保存文件(覆蓋模式).SaveToFile fileName, adSaveCreateOverWrite' 關閉文本流.CloseEnd With' 回收Set stream = NothingMsgBox "CSV 文件創建成功!", vbInformationExit Sub
End Sub
三. 添加按鈕
?如下圖所示,在【開發工具】選項卡中,插入一個按鈕到Sheet頁中
?然后將按鈕與宏代碼關聯即可