在實際應用中,我們經常從軟體中將資料匯出為文字檔案,在需要將這些文字檔案匯入到excel中時可以使用以下的方法。
在excel vba中可以使用add方法新建查詢表後匯入文字檔案,如下面的**所示。
#001 sub addquery()
#002
#003 with _
#004connection:="text;" & & "\工資表.txt", _
#005destination:=range("a1"))
#006textfileplatform = 936
#007textfilecommadelimiter = true
#008refresh
#009 end with
#010 end sub
**解析:
addquery過程使用querytable物件的add方法新建查詢表後將文字檔案「工資表.txt」的內容匯入到工作表中。
應用於querytable物件的add方法新建乙個查詢表,返回querytable物件,該物件代表新建的查詢表,語法如下:
destination, sql)
引數expression是必需的,返回乙個querytables物件。
引數connection是必需的,查詢表的資料來源。如果資料來源是文字檔案,是「text;《文字檔案路徑和名稱》」形式的字串,其他資料來源請參閱幫助。
引數destination是必需的,range型別,查詢表目標區域左上角單元格用於放置生成的查詢表的區域。目標區域必須在包含expression指定的querytables物件的工作表上。
引數sql是可選的,在odbc資料來源上執行的sql查詢字串,當將querytable物件、文字檔案、或是ado或dao recordset物件指定為資料來源時不能使用該引數。
第3行到第5行**在工作表中建立對位於同一目錄中的「工資表.txt」文字檔案的查詢,並將查詢結果放置到工作表中。
第6行**設定匯入的文字檔案的原始格式,,預設值是在「文字匯入嚮導」的「檔案原始格式」選項中的當前設定。
第7行**設定文字檔案匯入查詢表中時,是以逗號作為分隔符。
第8行**使用refresh方法更新外部資料區域,應用於querytable物件的refresh方法更新外部資料區域,語法如下:
引數expression是必需的,返回乙個querytable物件。
引數backgroundquery是可選的的,只用於基於sql查詢結果的querytable。
使用open語句輸入文字檔案,如下面的**所示。
#001 sub opentext()
#002 dim filename as string
#003 dim mytext as string
#004 dim marr() as string
#005 dim i as integer
#006 dim j as integer
#007 filename = & "\工資表.txt"
#008 j = 1
#009
#010 open filename for input as #1
#011 do while not eof(1)
#012line input #1, mytext
#013marr = split(mytext, ",")
#014for i = 0 to ubound(marr)
# i + 1) = marr(i)
#016next
#017j = j + 1
#018 loop
#019 close #1
#020 end sub
**解析:
opentext過程使用open語句將文字「工資表.txt」的內容輸入到工作表中。
第10行**使用open語句開啟文字檔案以完成對文字檔案的輸入。open語句能夠對檔案輸入/輸出(i/o),語法如下:。
open pathname for mode [access access] [lock] as [#]filenumber [len=reclength]
pathname是必需的,指定檔名,該檔名可能還包括目錄、資料夾及驅動器。
mode是必需的,指定檔案方式,有append、binary、input、output、或random方式。如果未指定方式,則以random訪問方式開啟檔案。
access是可選的,說明開啟的檔案可以進行的操作,有read、write、或read write操作。
lock是可選的,說明限定於其它程序開啟的檔案的操作,有shared、lock read、lock write、和lock read write操作。
filenumber是必需的,乙個有效的檔案號,範圍在 1 到 511 之間。使用freefile函式可得到下乙個可用的檔案號。
reclength是可選的,小於或等於 32,767(位元組)的乙個數。對於用隨機訪問方式開啟的檔案,該值就是記錄長度。對於順序檔案,該值就是緩衝字元數。
第11行**使用do...loop 語句重複執行第12行到第17行**,直到文字檔案的結尾。eof函式返回乙個integer,它返回boolean值true,表明已經到達為random或順序input開啟的檔案結尾,語法如下:
eof(filenumber)
引數filenumber是必需的,是乙個integer,包含任何有效的檔案號。
第12行**使用line input # 語句讀入一行資料並將其賦予變數mytext。line input # 語句從已開啟的順序檔案中讀出一行並將它分配給string變數,語法如下:
line input #filenumber, varname
filenumber是必需的,任何有效的檔案號。
varnamer是必需的,有效的variant或string變數名。
第13行**使用split函式按逗號作為分隔符分開這行字元,賦值陣列marr。關於split函式請參閱技巧169-2。
第14行到第16行**將陣列marr迴圈賦值給單元格,請參閱技巧169-1。
第19行**關閉文字檔案。close語句關閉open語句所開啟的輸入/輸出 (i/o) 檔案,語法如下:
close [filenumberlist]
引數filenumberlist是可選的,為乙個或多個檔案號,如省略則將關閉所有由open語句開啟的活動檔案。
使用opentext方法載入乙個文字檔案並將其作為包含單個工作表的工作簿處理,如下面的**所示。
#001 sub opentext()
#002 dim myfilename as string
#003 myfilename = "工資表.txt"
#004
#005 _
#006filename:= & "\" & myfilename, _
#007startrow:=1, datatype:=xldelimited, comma:=true
#008 with activeworkbook
#009with .sheets("工資表").range("a1").currentregion
#"sheet1").range("a1").resize(. . = .value
#011end with
#012close false
#013 end with
#014 end sub
**解析:
opentext過程使用opentext方法載入「工資表.txt」文字檔案並將其資料寫入到工作表中。
第5行到第7行**使用opentext方法載入「工資表.txt」文字檔案。opentext方法載入乙個文字檔案,並將其作為包含單個工作表的工作簿進行分列處理,然後在此工作表中放入經過分列處理的文字檔案資料,語法如下:
origin, startrow, datatype, textqualifier, consecutivedelimiter, tab, semicolon, comma, space, other, otherchar, fieldinfo, textvisuallayout, decimalseparator, thousandsseparator, trailingminusnumbers, local)
Excel VBA程式設計動態陣列
在有些情況下,使用者也許不清楚需要多大的陣列,這時就需要用乙個能夠改變大小的陣列,這就是動態陣列。動態陣列可以在任何時候改變大小。在vba中,動態陣列是最靈活 最方便的一種陣列。利用動態陣列還有助於有效管理記憶體,因為動態陣列是使用時才開闢記憶體空間,在不使用這個陣列時,還可以將記憶體空間釋放給系統...
Excel VBA用途和工作介面
vba可以幫助使用者迅速 輕鬆 高效地完成所面對的各種複雜工作。例如利用vba可以幫助公司職員提高辦公效率,而且對於從事會計 審計 統計等工作的人員,也可以快速完成工作。下面介紹vba的用途及工作環境。1 vba用途 vba是visual basic for application的縮寫,是visu...
Excel VBA程式設計VBE的組成
vbe必須借助excel或其他office元件才能使用。啟動excel 2007後,單擊 組中的visual basic按鈕,則彈出vbe視窗。其中,在vbe視窗中,主要由工具欄 選單欄和4個視窗組成,以幫助使用者建立和管理應用程式。使用者可以通過單擊工具欄中的按鈕或者執行選單欄中的命令,訪問其功能...