国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VBA:如何把EXCEL導出為txt ?

 

一些廢話:對命題的思考和解題步驟

Q:為什么要導出一個sheet為txt ?

A:很多時候,很多程序只能讀txt,能直接讀excel的偏少

我思考這個問題的幾個步驟,我打算從簡單到復(fù)雜,分步驟實現(xiàn)

  • 先試著把一個sheet導出為txt
  • 接下來,我打算試試導出成其他格式
  • 把多個sheet導出為多個其他文件?
  • 然后考慮試試從txt等文件格式里導入
  • 從多個文件導入到多張表
  • 多個文件導入到一個EXCEL?

 

二  代碼過程

下面代碼是我逐漸嘗試的過程,一個問題一個問題的排查解決,一個小白新手的痛苦經(jīng)歷,哈哈

第1版:將excel的一個sheet導出為txt

 EXCEL的導入導出,我想最簡單的應(yīng)該是,單獨導一個sheet為txt,所以我從這開始入手

可運行的代碼:

  1. Sub daochu1()
  2. '先做將1個sheet導出為txt
  3. Sheets("sheet1").SaveAs ("test1.txt")
  4. MsgBox "導出完畢"
  5. End Sub

Q1:可運行,但是為什么找不到txt文件?

A1:saveas 和 savecopyas 都需要指定文件名,路徑,擴展名

       如果不寫文件路徑,甚至寫死的路徑,文件也不會自動保存在當前的 工作文件夾,(也就是worksheet所在的)

      而且用saveas,你會發(fā)現(xiàn),新生成了一個以你這個名字為新名字的EXCEL表

 

第2版:改進:加上文件保存路徑

  1. Sub daochu101()
  2. ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\test1.txt"
  3. MsgBox Sheets("sheet1").Name & "保存完成"
  4. End Sub

Q1: 用了下savecopyas,為了保存一個副本(另存為)

A1: 實際上,我發(fā)現(xiàn)saveas  savecopyas 好像都是新建了一個EXCEL

      差別是  saveas 直接打開這個新的EXCEL

      savecopyas不打開copy的這個excel

Q2: 語法問題

A2:thisworkbook等可以用 saveas 或 savecopyas

      但是 sheet層次的,只能用saveas,暫時也不知道原因?

Q3: 確實另存了一個txt,但是這樣保存的txt是個亂碼文件

       應(yīng)該是直接保存只能是EXCEL相同格式,比如  xlsx,xls,xlsm

      如果這么寫是沒錯的  ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\daochu1.xlsm"
      不指定文件格式就會是亂碼

      文件保存格式影響較大,即使是.xls和原表格式不同,Windows打開也會有提示

     

本文件路徑的寫法

  1. 方法1:不寫,就是默認在當前工作目錄下----在這里好像行不通?
  2. 方法2:寫引號括起來絕對路徑,不推薦
  3. 方法3:指代的絕對路徑,是文件級別的,thisworkbook.path
  4. 組合路徑寫法   thisworkbook.path & "\test.txt"

 

第3版: 解決保存的txt是亂碼的問題,需要用 fileformat

 現(xiàn)在就查下如何能保存為一個txt,我先保證測試的Excel里其他sheet 保證只有一個sheet,一個個排除問題

 這種方法是可以的

  1. Sub daochu1txt()
  2. ActiveSheet.SaveAs Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
  3. End Sub

第2種寫法也可以

但是保存的都是當前激活的這個sheet的內(nèi)容,并不是把整個excel 都保存了

事實下,也不好吧,一個excel的多個sheet都保存到1個txt里吧?

  1. Sub daochu1txt()
  2. ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\222.txt", FileFormat:=xlText, CreateBackup:=False
  3. End Sub

 

  • 從這試驗看出來,無論   workbook 還是worksheet 的saveas ,雖然語法都OK,但saveas好像都是針對的一個sheet
  • , CreateBackup:=False 可以省略,我現(xiàn)在并不知道什么意思
  • ActiveSheet  可替換為 sheets("sheet2")

 

第4版: 單個txt可以保存為txt,循環(huán)起來就可以保存多個sheet為txt了吧

上面的代碼循環(huán)起來,就是可以把多個sheet存為多個txt了吧?于是我嘗試了下

  1. Sub daochu1txt()
  2. Dim sh As Worksheet
  3. For Each sh In ThisWorkbook.Worksheets
  4. '錯誤寫法 for each worksheet in thisworkbook 錯誤有2處
  5. '變量不能用保留詞
  6. '從屬關(guān)系之前學習過,worksheet屬于worksheets,而不屬于workbook
  7. sh.SaveAs Filename:=ThisWorkbook.Path & "\" & sh.Name & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
  8. 'worksheet saveas時必須是 FileFormat:=xlUnicodeText
  9. 'workbook saveas時必須是 FileFormat:=xlText
  10. Next
  11. End Sub

 

 

三 總結(jié)

 

saveas和 savecopyas 的語法

  • 對象.方法
  • sheet.saveas 或 sheet.savecopyas
  • saveas 和 savecopyas 都需要指定文件名,路徑,擴展名,必須含擴展名!.xls  .txt等等
  • SaveAs 語法
  • SaveAs 可以支持 FileFormat,詳情如下:
  • 表達式.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
  • MSDN上有詳細解釋
  • https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.saveas?redirectedfrom=MSDN

 

  • 語法:
  • 必須把路徑寫清楚
  • 有兩種格式,括號或空格
  • saveas (路徑.文件類型)             或 saveas  路徑.文件類型
  • savecopyas (路徑.文件類型)     或 savecopyas  路徑.文件類型
  • 如果saveas  路徑.文件類型 保存的類型和源文件類型不同,也會新生成一個文件出來

 

  • saveas 是 把本文件直接 改名保存,但原來的EXCEL并沒被改變,只是新打開了一個excel文件
  • saveas會直接打開這個新的EXCEL
  • savecopyas是另存為一個新文件,并且savecopyas不打開copy的這個另存為的文件。
  • 實際上,我發(fā)現(xiàn)saveas  savecopyas 好像都是新建了一個EXCEL,都不影響老的EXCEL

 

  • saveas 針對的一定是一個sheet
  • 無論  workbook.saveas  還是worksheet .saveas ,雖然語法都OK,但saveas好像都是針對的一個sheet
  • savecopy可以把一次把整個EXCEL文件(多個SHEET),另存為一個新的EXCEL,或其他文件?
  • 看起來 sheet 可以saveas 不能savecopyas,并且 FileFormat:=xlUnicodeText
  • 而  workbook 可以用saveas 或 savecopyas,并且FileFormat:=xlText

 

 

 

 

 

 


 

 

 

四 其他未整理,一些學習資料還沒學習---

 

問題3:怎么用VBA打開一個txt文件?沒試好,先注釋掉了

'   VBA.openfile ("test1.txt")

 

你用 saveas會新生成一個 這個名字的excel文件

        你看看你現(xiàn)在操作的EXCEL名字變了沒:個人文件test1.txt 這樣一個奇怪名字的exce

事實下,也不好吧,一個excel的多個sheet都保存到1個txt里吧?

 

 

https://blog.csdn.net/chenqiai0/article/details/52203423

https://blog.csdn.net/chenqiai0/article/details/52203472

 

 

http://club.excelhome.net/thread-1002093-1-24.html?jdfwkey=emn3s1

https://blog.csdn.net/lidawu7322/article/details/90411325

https://blog.csdn.net/xuming1209/article/details/53998982

https://wenku.baidu.com/view/acc1ea0de45c3b3567ec8bf0.html

 

 

https://blog.csdn.net/qq_35106907/article/details/88551114

http://www.excelpx.com/thread-245531-1-1.html

http://club.excelhome.net/thread-1167661-1-1.html

https://jingyan.baidu.com/article/f25ef254a4bfba482c1b82b6.html

http://club.excelhome.net/thread-996804-1-1.html

 

FileFormat:=xlOpenXMLWorkbook

如果使用后綴,則使用帶有open的那種格式

我有幾個xls格式的文件,用saveas 成xlsx的格式,如下
saveas name.xlsx
結(jié)果當我點開新保存的文件時,提示我格式錯誤,或者后綴名錯誤,或者文件損壞。
然后這個提示跟我直接把后綴名xls改成xlsx是一樣的,我在想saveas這個功能是不是就只是改了個后綴名啊,那我用宏的話,如何實現(xiàn)和菜單另存為一樣的功能呢?是我saveas少什么參數(shù)?

 

http://www.excelpx.com/thread-340936-1-1.html

https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.saveas?redirectedfrom=MSDN

https://zhidao.baidu.com/question/609007680.html

http://club.excelhome.net/thread-1134264-1-1.html

https://zhidao.baidu.com/question/2144186557598425708.html

https://bbs.csdn.net/topics/370028429

 

 

 Sub W3()
     Dim wb As Workbook
     Set wb = Workbooks.Add        ' 初次執(zhí)行完此句代碼會產(chǎn)生一個"工作簿1"并打開,下次產(chǎn)生'工作簿2',wb看不到可能只是過渡作用
      wb.Sheets("sheet1").Range("a1") = "abcd"
       wb.SaveAs "D:\B.xls"        ' SaveAs另存為即把當前正在使用的文件關(guān)閉掉,另存到其它地方,原來的文件關(guān)閉不保存。保存后代碼所在工作簿和"D:\B.xls"都是打開狀態(tài),不受任何影響,還有若要保存的地方已經(jīng)有同名文件會提示已有是否替換,而SaveCopyAs不會提示會直接替換同名文件
  End Sub
'5 excel文件保存備份
   Sub w5()
      Dim wb As Workbook
      Set wb = ThisWorkbook
      wb.Save
      wb.SaveCopyAs "D:\ABC.xls"        ' ThisWorkbook不受影響仍是打開狀態(tài),但 "D:\ABC.xls"是關(guān)閉狀態(tài),這點和SaveAs不同
   End Sub

 

 

Sub 復(fù)制保存關(guān)閉()
Sheets("sheet2").Copy
ActiveSheet.Name = "復(fù)制"
ActiveWorkbook.Save          ‘默認路徑下保存工作簿,自動重命名
End Sub
在該方法中使用的SAVE保存,save后面不能接參數(shù),是將新建的工作簿直接保存在電腦默認的路徑下,并且自動重命名,但是不會關(guān)閉保存的工作簿。如果前兩句注釋掉,第三句僅僅是對該工作簿保存處理,相當于點擊保存按鈕!
Sub 復(fù)制保存關(guān)閉2()
Sheets("sheet2").Copy
ActiveSheet.Name = "復(fù)制"
ActiveWorkbook.SaveAs                   ‘默認路徑下保存工作簿,自動重命名
ActiveWorkbook.SaveAs "新建"            ‘默認路徑下保存工作簿,并命名為“新建”
ActiveWorkbook.SaveAs "D:\新建.xlsx"    ‘在D盤下保存工作簿,并命名為“新建”
End Sub
該方法中使用的是saveas,在saveas后面可以接參數(shù),比如“工作簿名稱”或者“在某個地址路徑下及工作簿名稱”,如果存在同名工作簿,則會提示是否覆蓋原有工作簿?也可以不接參數(shù),則是保存在默認路徑下并自動重命名。保存的工作簿會關(guān)閉!上面的代碼中會產(chǎn)生一個保存的未關(guān)閉的excel文件,應(yīng)該是前兩句代碼導致。
如果前兩句注釋掉,第3句直接正常運行(相當于復(fù)制原工作簿);第4句也是相當于復(fù)制原工作簿,只是改一下工作簿名字;第5句因為保存的是xlsx格式而出錯,改為xlsm就沒事,也相當于復(fù)制原工作簿并修改工作簿名。此三句均是直接在對應(yīng)路徑下保存并關(guān)閉工作簿。
Sub 復(fù)制保存關(guān)閉3()
Sheets("sheet2").Copy
ActiveSheet.Name = "復(fù)制"
'ActiveWorkbook.SaveCopyAs        '后面必須接參數(shù),否則不能運行
ActiveWorkbook.SaveCopyAs "新建"  '不指定文件格式,自動保存在默認路徑下,并且是不識別格式文件
ActiveWorkbook.SaveCopyAs "新建.xlsx"       '指定文件格式,自動保存在默認路徑下
ActiveWorkbook.SaveCopyAs "D:\新建.xlsx"    '在指定路徑下保存為指定格式的文件
End Sub
在使用savecopyas時,首先后面必須接參數(shù),其次必須制定文件的保存格式,再者該方法保存的文件是直接在默認路徑下或者指定的地址里保存并關(guān)閉該文件(上面代碼會產(chǎn)生一個未保存的excel文件,應(yīng)該是前兩句導致!),所以前兩句注釋掉依然可以正常運行,并且毫無提示!自動覆蓋同名工作簿。

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel VBA之第四十課
VB之Excel對象Save,Saveas,SaveCopyAs區(qū)別詳解
用VBA打開、關(guān)閉、新建、保存和刪除Excel工作簿 | VBA實例教程
VBA簡單入門23:操作(新建、保存、復(fù)制、刪除、拆分)工作簿
VBA簡單入門26:工作簿(數(shù)據(jù)、工作表)保存、另存為工作簿
Excel如何實現(xiàn)跨文件表引用數(shù)據(jù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服