| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> vb >> Excel-VBA文件操作
 

Excel-VBA文件操作

2008-08-22 06:50:28  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  在我們日常使用Excel的時候,不僅會用到當前Excel文件的數據,還經常需要訪問其他的數據文件。這些數據文件可能是Excel文件、文本文件或數據庫文件等。經常有朋友會問如何在vba代碼裏操作這些數據文件?本文就系統地介紹一下在Excel中應用VBA操作數據文件的方法。

  本文主要介紹四種常用的方法:

  1、利用Excel對象來處理文件;

  2、利用VBA文件處理語句來處理文件;

  3、利用FileSystemObject對象來處理文件;

  4、利用API函數來處理文件。

  當然對于數據庫文件,還可以利用ADO+SQL的方法操作,不過論壇已經有前輩詳細介紹過此類方法,本文就不再重複了。

  一、利用Excel對象來處理文件

  利用Excel對象自帶的方法來操作文件是最方便,也是最簡單的。

  我們主要利用Workbooks集合和Workbook對象的方法來操作文件。

  1、打開Excel文件

  我們可以用Workbooks.Open方法打開一個Excel工作簿。

  Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

   其中FileName是必選的參數,表示要打開的工作簿名,如果沒有指定路徑,則代表當前路徑。另外14個是可選參數,除了密碼參數,其他的一般很少用。具體的含義可以參看VBA的幫助。

  例:

   Workbooks.Open "F:\test.xls"

  可以打開F盤的test.xls文件。

  2、打開文本文件

   使用Open方法也可以打開文本文件,但建議使用OpenText方法。此方法是載入一個文本文件,並將其作爲包含單個工作表的工作簿進行分列處理,然後在此工作表中放入經過分列處理的文本文件數據。完整語法如下:

  Workbooks.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)

  關于以上參數的具體含義可以參看VBA的幫助,這裏就不重複了。在實際的編程中,一般無需對這些複雜的參數進行處理。可以通過錄制宏來得到打開一個文本文件的VBA代碼。具體方法就是選擇「文件——打開」,然後選擇打開文本文件,就會出現文本導入向導,一步一步執行完,直到文本打開後,停止錄制。

  以下是錄制宏得到的代碼:

  Sub Macro1()

  '

  ' Macro1 Macro

  ' 宏由 MC SYSTEM 錄制,時間: 2007-3-29

  '

  '

   Workbooks.OpenText Filename:="F:\CallWindowProc.txt", Origin:=xlWindows, _

   StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

   ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

   , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

   TrailingMinusNumbers:=True

  End Sub

  在實際編程中只要做相應的修改就可以使用了。

  3、打開其他文件

  利用Excel對象還可以打開XML文件和一些數據庫(如Access)文件,對應XML文件,需要Excel2003以上的版本。

  OpenXML方法的語法如下:

  Workbooks.OpenXML(Filename, Stylesheets, LoadOption)

  FileName String 類型,必需。要打開的文件名。

  Stylesheets Variant 類型,可選。單個值或值的數組,用于指定要應用哪些 XSL 轉換 (XSLT) 樣式表處理指令。

  LoadOption Variant 類型,轉換。指定 Excel 打開 XML 數據文件的方式。可爲 XlXmlLoadOption 常量之一。

  XlXmlLoadOption 可爲以下 XlXmlLoadOption 常量之一:

  xlXmlLoadImportToList 將 XML 數據文件的內容置于 XML 列表中。

  xlXmlLoadMapXml 在「XML 結構」任務窗格中顯示 XML 數據文件的架構。

  xlXmlLoadOpenXml 打開 XML 數據文件。文件的內容將展開。

  xlXmlLoadPromptUser 提示用戶選擇打開文件的方式。

  示例

  下面的代碼打開了 XML 數據文件「customers.xml」並在 XML 列表中顯示了此文件的內容。

  Sub UseOpenXML()

   Application.Workbooks.OpenXML _

   Filename:="customers.xml", _

   LoadOption:=xlXmlLoadImportToList

  End Sub

  OpenDatabase 方法語法如下:

  Workbooks.OpenDatabase(FileName, CommandText, CommandType, BackgroundQuery, ImportDataAs)

  FileName String 類型,必需。連接字符串。

  CommandText Variant 類型,可選。查詢的命令文本。

  CommandType Variant 類型,可選。查詢的命令類型。以下是可用的命令類型:Default、SQL 和 Table。

  BackgroundQuery Variant 類型,可選。查詢的背景。

  ImportDataAs Variant 類型,可選。確定查詢的格式。

  示例

  本示例中,Excel 打開了「northwind.mdb」文件。

  Sub OpenDatabase()

  Workbooks.OpenDatabase FileName:="C:\northwind.mdb"

  End Sub

  4、保存文件

  文件的保存使用Workbook對象的Save或SaveAs方法。

  Save方法使用簡單,語法爲

  expression.Save,expression是某個Workbook對象。

  如:ActiveWorkbook.Save

  即保存當前活動工作簿。

  如果是第一次保存工作簿或要另存爲,請使用 SaveAs 方法爲該文件指定文件名。

  其語法爲:

  expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

  具體參數含義可參看VBA幫助,使用都比較簡單。

  示例

  本示例新建一個工作簿,提示用戶輸入文件名,然後保存該工作簿。

  Set NewBook = Workbooks.Add

  Do

   fName = Application.GetSaveAsFilename

  Loop Until fName <> False

  NewBook.SaveAs Filename:=fName

  Application.GetSaveAsFilename爲調出標准的「另存爲」對話框,獲取用戶文件名,但並不真正保存任何文件,然後使用代碼保存文件。還有Application.GetOpenFileName可以調出標准的「打開」對話框。

  5、關閉文件

  關閉文件可以使用Workbooks集合或Workbook對象的 Close 方法。前者是關閉所有打開的工作簿,後者關閉特定的工作簿。

  Workbook對象的 Close 方法語法爲:

  expression.Close(SaveChanges, Filename, RouteWorkbook)

  SaveChanges參數表示是否保存更改,對許多不需要更改的操作,可設置爲False以免彈出保存更改提示的對話框。

  FileName 可選。以此文件名保存所做的更改。

  RouteWorkbook 可選。如果指定工作簿不需要傳送給下一個收件人(沒有傳送名單或已經傳送),則忽略該參數。

  示例

  本示例關閉 Book1.xls,並放棄所有對此工作簿的更改。

  Workbooks("BOOK1.XLS").Close SaveChanges:=False

  

  本示例關閉所有打開的工作簿。如果某個打開的工作簿有改變,Microsoft Excel 將顯示詢問是否保存更改的對話框和相應提示。

  Workbooks.Close

  6、綜合實例

  假如F盤有一個Excel文件test.xls,現在有另一個Excel文件要訪問test.xls的數據,我們來看用VBA代碼如何操作。代碼如下:

  Public Sub test()

  Application.ScreenUpdating = False

  Workbooks.Open "f:\test.xls"

  ThisWorkbook.Sheets(1).Range("b1") = ActiveWorkbook.Sheets(1).Range("a2")

  ActiveWorkbook.Close

  Application.ScreenUpdating = True

  End Sub

  首先關閉屏幕刷新,是爲了防止test.xls在打開時被看見(有時候還是看的見)。打開後,見test.xls的Sheet1的單元格A2中的值賦給當前工作簿的Sheet1的單元格B2,然後關閉test.xls。

  當要打開的工作簿不確定的時候,可以通過調用打開對話框來讓用戶自己選擇。

  可改爲如下:

  Public Sub test()

  Application.ScreenUpdating = False

  Dim Filename as String

  Filename = Application.GetOpenFileName

  Workbooks.Open Filename

  ThisWorkbook.Sheets(1).Range("b1") = ActiveWorkbook.Sheets(1).Range("a2")

  ActiveWorkbook.Close

  Application.ScreenUpdating = True

  End Sub

  7、總結

  利用Excel對象的方法進行文件操作是最簡單,也是最方便的,適合初學者。對于Excel文件格式,如果我們僅僅是讀取其表格中的內容,這種方法也是首選。對于文本文件的操作,使用第二種方法比較方便,若要將文本轉換成表格,那麽使用此方法也是合適的。
 
 
 
上一篇《MP4視頻格式:該選擇RMVB還是FLV?》
下一篇《Win32.Troj.VB.kr.81920》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
在我們日常使用Excel的時候,不僅會用到當前Excel文件的數據,還經常需要訪問其他的數據文件。這些數據文件可能是Excel文件、文本文件或數據庫文件等。經常有朋友會問如何在vba代碼裏操作這些數據文件?本文就系統地介紹一下在Excel中應用VBA操作數據文件的方法。 本文主要介紹四種常用的方法: 1、利用Excel對象來處理文件; 2、利用VBA文件處理語句來處理文件; 3、利用FileSystemObject對象來處理文件; 4、利用API函數來處理文件。 當然對于數據庫文件,還可以利用ADO+SQL的方法操作,不過論壇已經有前輩詳細介紹過此類方法,本文就不再重複了。 一、利用Excel對象來處理文件 利用Excel對象自帶的方法來操作文件是最方便,也是最簡單的。 我們主要利用Workbooks集合和Workbook對象的方法來操作文件。 1、打開Excel文件 我們可以用Workbooks.Open方法打開一個Excel工作簿。 Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) 其中FileName是必選的參數,表示要打開的工作簿名,如果沒有指定路徑,則代表當前路徑。另外14個是可選參數,除了密碼參數,其他的一般很少用。具體的含義可以參看VBA的幫助。 例: Workbooks.Open "F:\test.xls" 可以打開F盤的test.xls文件。 2、打開文本文件 使用Open方法也可以打開文本文件,但建議使用OpenText方法。此方法是載入一個文本文件,並將其作爲包含單個工作表的工作簿進行分列處理,然後在此工作表中放入經過分列處理的文本文件數據。完整語法如下: Workbooks.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local) 關于以上參數的具體含義可以參看VBA的幫助,這裏就不重複了。在實際的編程中,一般無需對這些複雜的參數進行處理。可以通過錄制宏來得到打開一個文本文件的VBA代碼。具體方法就是選擇「文件——打開」,然後選擇打開文本文件,就會出現文本導入向導,一步一步執行完,直到文本打開後,停止錄制。 以下是錄制宏得到的代碼: Sub Macro1() ' ' Macro1 Macro ' 宏由 MC SYSTEM 錄制,時間: 2007-3-29 ' ' Workbooks.OpenText Filename:="F:\CallWindowProc.txt", Origin:=xlWindows, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True End Sub 在實際編程中只要做相應的修改就可以使用了。 3、打開其他文件 利用Excel對象還可以打開XML文件和一些數據庫(如Access)文件,對應XML文件,需要Excel2003以上的版本。 OpenXML方法的語法如下: Workbooks.OpenXML(Filename, Stylesheets, LoadOption) FileName String 類型,必需。要打開的文件名。 Stylesheets Variant 類型,可選。單個值或值的數組,用于指定要應用哪些 XSL 轉換 (XSLT) 樣式表處理指令。 LoadOption Variant 類型,轉換。指定 Excel 打開 XML 數據文件的方式。可爲 XlXmlLoadOption 常量之一。 XlXmlLoadOption 可爲以下 XlXmlLoadOption 常量之一: xlXmlLoadImportToList 將 XML 數據文件的內容置于 XML 列表中。 xlXmlLoadMapXml 在「XML 結構」任務窗格中顯示 XML 數據文件的架構。 xlXmlLoadOpenXml 打開 XML 數據文件。文件的內容將展開。 xlXmlLoadPromptUser 提示用戶選擇打開文件的方式。 示例 下面的代碼打開了 XML 數據文件「customers.xml」並在 XML 列表中顯示了此文件的內容。 Sub UseOpenXML() Application.Workbooks.OpenXML _ Filename:="customers.xml", _ LoadOption:=xlXmlLoadImportToList End Sub OpenDatabase 方法語法如下: Workbooks.OpenDatabase(FileName, CommandText, CommandType, BackgroundQuery, ImportDataAs) FileName String 類型,必需。連接字符串。 CommandText Variant 類型,可選。查詢的命令文本。 CommandType Variant 類型,可選。查詢的命令類型。以下是可用的命令類型:Default、SQL 和 Table。 BackgroundQuery Variant 類型,可選。查詢的背景。 ImportDataAs Variant 類型,可選。確定查詢的格式。 示例 本示例中,Excel 打開了「northwind.mdb」文件。 Sub OpenDatabase() Workbooks.OpenDatabase FileName:="C:\northwind.mdb" End Sub 4、保存文件 文件的保存使用Workbook對象的Save或SaveAs方法。 Save方法使用簡單,語法爲 expression.Save,expression是某個Workbook對象。 如:ActiveWorkbook.Save 即保存當前活動工作簿。 如果是第一次保存工作簿或要另存爲,請使用 SaveAs 方法爲該文件指定文件名。 其語法爲: expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local) 具體參數含義可參看VBA幫助,使用都比較簡單。 示例 本示例新建一個工作簿,提示用戶輸入文件名,然後保存該工作簿。 Set NewBook = Workbooks.Add Do fName = Application.GetSaveAsFilename Loop Until fName <> False NewBook.SaveAs Filename:=fName Application.GetSaveAsFilename爲調出標准的「另存爲」對話框,獲取用戶文件名,但並不真正保存任何文件,然後使用代碼保存文件。還有Application.GetOpenFileName可以調出標准的「打開」對話框。 5、關閉文件 關閉文件可以使用Workbooks集合或Workbook對象的 Close 方法。前者是關閉所有打開的工作簿,後者關閉特定的工作簿。 Workbook對象的 Close 方法語法爲: expression.Close(SaveChanges, Filename, RouteWorkbook) SaveChanges參數表示是否保存更改,對許多不需要更改的操作,可設置爲False以免彈出保存更改提示的對話框。 FileName 可選。以此文件名保存所做的更改。 RouteWorkbook 可選。如果指定工作簿不需要傳送給下一個收件人(沒有傳送名單或已經傳送),則忽略該參數。 示例 本示例關閉 Book1.xls,並放棄所有對此工作簿的更改。 Workbooks("BOOK1.XLS").Close SaveChanges:=False 本示例關閉所有打開的工作簿。如果某個打開的工作簿有改變,Microsoft Excel 將顯示詢問是否保存更改的對話框和相應提示。 Workbooks.Close 6、綜合實例 假如F盤有一個Excel文件test.xls,現在有另一個Excel文件要訪問test.xls的數據,我們來看用VBA代碼如何操作。代碼如下: Public Sub test() Application.ScreenUpdating = False Workbooks.Open "f:\test.xls" ThisWorkbook.Sheets(1).Range("b1") = ActiveWorkbook.Sheets(1).Range("a2") ActiveWorkbook.Close Application.ScreenUpdating = True End Sub 首先關閉屏幕刷新,是爲了防止test.xls在打開時被看見(有時候還是看的見)。打開後,見test.xls的Sheet1的單元格A2中的值賦給當前工作簿的Sheet1的單元格B2,然後關閉test.xls。 當要打開的工作簿不確定的時候,可以通過調用打開對話框來讓用戶自己選擇。 可改爲如下: Public Sub test() Application.ScreenUpdating = False Dim Filename as String Filename = Application.GetOpenFileName Workbooks.Open Filename ThisWorkbook.Sheets(1).Range("b1") = ActiveWorkbook.Sheets(1).Range("a2") ActiveWorkbook.Close Application.ScreenUpdating = True End Sub 7、總結 利用Excel對象的方法進行文件操作是最簡單,也是最方便的,適合初學者。對于Excel文件格式,如果我們僅僅是讀取其表格中的內容,這種方法也是首選。對于文本文件的操作,使用第二種方法比較方便,若要將文本轉換成表格,那麽使用此方法也是合適的。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
美得讓人陶醉
杭州美女模特米萊
清純迷人唐小妹
氣質一流的上海女生
夢醉克孜加爾湖畔
珠江公園(二)
魔域桃源
南嶺森林公園親水谷
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有