ACCESS中用VBA如何导入当前目录内的指定EXCEL

2024-12-21 18:49:01
推荐回答(4个)
回答1:

部分中文详文:

在导入数据的时候,有的时候,Access会把一些数据作为数值型的数据,实际上,我们需要作为字符型的数据,那么如何在导入的时候,指定导入的各种规格和细节呢?

答案是利用Schema.ini即可(导入/导出规格文件)。

有几种方式创建Schema,第一种是利用Access自身的文本数据导入导出向导:

在这个对话框中,点击[高级...]按钮,弹出对话框:

然后只要设定好各种格式,然后点击[另存为]保存即可。这种方式创建的Schema,只能集成在数据库中,无法灵活单独使用,因此我们需要用到另外一种方式:INI文件,推荐使用INI文件这种方式。

Schema.ini格式如下(参考:MSDN主题 Schema.ini File):

Schema.ini用于提供文本数据中的记录规格信息。每个Schema.ini的条目用于指明表的5个特征之一:

文本文件名
文件名有方括号括起来,例如如果要对Sample.txt使用Schema,那么它的对应的Schema条目应该是

[Sample.txt]

文件格式
指令如下:

Format=Value

Value可以取下面的值之一:

TabDelimited 用Tab分隔

CSVDelimited 用逗号分隔

FixedLength 固定长度

Delimited(C) 指定字符,其中C可以为除了双引号(")外的任何字符,也可以为空

字段名、字段宽度和类型
格式为:Coln=字段名 数据类型 [width 宽度]

字段名可以是任意字符,如果字段名包含空格,请使用双引号括起来。

数据类型可以为:

Bit

Byte

Short(Integer)

Long

Currency

Single

Double(Float)

DateTime(Date DateFormat)

Text(Char)

Memo(LongChar)

其中DateFormat是日期的格式字符串例如:Date YYYY-MM-DD

字符集
格式:CharacterSet=ANSI | OEM

格式只有两种:ANSI和OEM

特殊数据类型转换
特殊数据类型转换一般使用的比较少,主要是自定义日期、货币等等的数据格式,一般不用理会。在此也不作详细叙述。请自己查看MSDN帮助:Schema.ini File

 

 

下面给出一个简单的例子,假设有一个表Contacts.txt类似下面:

First NameLast NameHireDate

Nancy Davolio 10-22-91

Robert King 10-23-91

那么Schema.ini个是类似下面的INI文件(我加了注释):

[Contacts.txt] ///需要导入的文本文件名

ColNameHeader=True ///是否有数据头

Format=FixedLength ///字段固定长度

MaxScanRows=0 ///最多导入行

CharacterSet=OEM ///字符集

Col1="First Name" Char Width 10 ///第一列格式

Col2="Last Name" Char Width 9 ///第二列格式

Col3="HireDate" Date Width 8 ///第三列格式

////依此类推

我们可以根据数据自动创建这个Schema.ini文件!

注意,Schema.ini必须和需要导入的文本文件在同一目录!!!如果不在同一个目录,必须指定Schema.ini的全路径!

此后,我们就可以利用下面的语句来导入数据了:

DoCmd.TransferText acImportFixed, , "Contacts", "C:Documents.txt"

或者

DoCmd.TransferText acImportFixed, "C:Documents.ini", "Contacts", "C:Documents.txt"

下面给出TransferText的语法(摘自Access帮助):

DoCmd.TransferText [TransferType][, SpecificationName], TableName, FileName[, HasFieldNames][, HtmlTableName][, CodePage]

TransferType 可选 AcTextTransferType。

AcTextTransferType 可以是下列 AcTextTransferType 常量之一:

acExportDelim

acExportFixed

acExportHTML

acExportMerge

acImportDelim 默认

acImportFixed

acImportHTML

acLinkDelim

acLinkFixed

acLinkHTML

如果将该参数留空,则采用默认常量 (acImportDelim)。

SpecificationName 可选 Variant 型。字符串表达式,表示在当前数据库中创建并保存的导入或导出规格的名称。对于固定长度的文本文件, 必须指定参数或使用 schema.ini 文件,该文件还必须保存在导入、链接或导出的文本文件的同一个文件夹中。若要创建一个方案文件, 可使用文本导入/导出向导创建此文件。对于分隔的文本文件和 Microsoft Word 邮件合并数据文件,可以将该参数留空,以便选择默认的导入/导出规格。

TableName 可选 Variant 型。字符串表达式,表示要向其导入文本数据、从中导出文本数据或链接文本数据的 Microsoft Access 表的名称,或者要将其结果导出到文本文件的 Microsoft Access 查询的名称。

FileName 可选 Variant 型。字符串表达式,表示要从中导入、导出到或链接到的文本文件的完整名称(包括路径)。

HasFieldNames 可选 Variant 型。使用 True (-1) 可以在导入、导出或链接时,使用文本文件中的第一行作为字段名。使用 False (0) 可以将文本文件中的第一行看成普通数据。如果将该参数留空,则采用默认值 (False)。该参数将被 Microsoft Word 邮件合并数据文件忽略,这些文件的第一行中必须包含字段名。

HTMLTableNam 可选 Variant 型。字符串表达式,表示要导入或链接的 HTML 文件中的表或列表的名称。除非 transfertype 参数设为 acImportHTML 或 acLinkHTML,否则该参数将被忽略。如果将该参数留空,则导入或链接 HTML 文件中的第一个表或列表。如果 HTML 文件中存在 标记,则 HTML 文件的表或列表名称取决于该标记指定的文本。如果没有 标记,则名称由 标记指定的文本决定。如果有多个表或列表具有相同的名称,则 Microsoft Access 将通过给每个表或列表名称结尾添加一个数字,如“雇员1”和“雇员2”来区分它们。<br><br>CodePage 可选 Variant 型。Long 型值,用于标识代码页的字符集。<br><br>更详细的英文参考:<br>Schema.ini File (Text File Driver)<br>When the Text driver is used, the format of the text file is determined by using a schema information file. The schema information file, which is always named Schema.ini and always kept in the same directory as the text data source, provides the IISAM with information about the general format of the file, the column name and data type information, and a number of other data characteristics. A Schema.ini file is always required for accessing fixed-length data; you should use a Schema.ini file when your text table contains DateTime, Currency, or Decimal data or any time you want more control over the handling of the data in the table.<br><br>Note The Text ISAM will obtain initial values from the registry, not from Schema.ini. The same default file format applies to all new text data tables. All files created by the CREATE TABLE statement inherit those same default format values, which are set by selecting file format values in the Define Text Format dialog box with <default> chosen in the Tables list. If the values in the registry are different from the values in Schema.ini, the values in the registry will be overwritten by the values from Schema.ini.<br>Understanding Schema.ini Files<br>Schema.ini files provide schema information about the records in a text file. Each Schema.ini entry specifies one of five characteristics of the table: <br><br>The text file name <br>The file format <br>The field names, widths, and types <br>The character set <br>Special data type conversions <br>The following sections discuss these characteristics.<br><br>Specifying the File Name<br>The first entry in Schema.ini is always the name of the text source file enclosed in square brackets. The following example illustrates the entry for the file Sample.txt:<br><br>[Sample.txt]<br>Specifying the File Format<br>The Format option in Schema.ini specifies the format of the text file. The Text IISAM can read the format automatically from most character-delimited files. You can use any single character as a delimiter in the file except the double quotation mark ("). The Format setting in Schema.ini less than 1 and greater than –1 should contain leading zeros; this value can either be False (no leading zeros) or True. <br>CurrencySymbol Indicates the currency symbol to be used for currency values in the text file. Examples include the dollar sign ($) and Dm. <br>CurrencyPosFormat Can be set to any of the following values: <br>Currency symbol prefix with no separation ($1) <br>Currency symbol suffix with no separation (1$) <br>Currency symbol prefix with one character separation ($ 1) <br>Currency symbol suffix with one character separation (1 $) <br><br>CurrencyDigits Specifies the <br><br>CurrencyThousandSymbol <br>[ 本贴由 大熊 于 2003-4-1 16:33 最后编辑 ]收藏 分享</p> </div> </div> <div class="clear"></div> </div> <div class="wdhdnr"> <div class="huidanrtop"> <div class="wdhuidaxinx"> <div class="wdhuidaxm">回答2:</div> </div> </div> <div class="clear"></div> <div class="wdhuidanrmid"> <div class="zuijiacont"> <p>新建一个空数据库(或打开已有数据库文件),在弹出的数据库对话框中点击“新建”----导入表---在“导入”对话框中的“导入类型”中选“MS EXCEL”按路径找出你要导入的的EXCEL文件,就样就可以了 <br>如果你要将EXCEL文件导入已有数据库表中,应注意EXCEL文件的字段设置与ACCESSS的字段应一致。<br><br>导入ACCESSS后如果插入新的字段点击“设计视图”--插入列---</p> </div> </div> <div class="clear"></div> </div> <div class="wdhdnr"> <div class="huidanrtop"> <div class="wdhuidaxinx"> <div class="wdhuidaxm">回答3:</div> </div> </div> <div class="clear"></div> <div class="wdhuidanrmid"> <div class="zuijiacont"> <p>楼主你好,看见你提问Excel的这个问题,嘿嘿,好像在那里看见过,所以我来解答你,不过我怕我说的不是很清楚,这样好了我给你个网址你进去看看,里面绝对可以解决你的问题的答案,我基本都是在那边学的,什么都有,绝对全面,网址是 http://www.blue1000.com/bkhtml/c118/,你记得只找你的问题,看的太多小心眼花!@</p> </div> </div> <div class="clear"></div> </div> <div class="wdhdnr"> <div class="huidanrtop"> <div class="wdhuidaxinx"> <div class="wdhuidaxm">回答4:</div> </div> </div> <div class="clear"></div> <div class="wdhuidanrmid"> <div class="zuijiacont"> <p>123456789</p> </div> </div> <div class="clear"></div> </div> </div> </div> <div class="wendaright"> <div class="wdluluerwema"> <div class="wdxgwttop">相关问答</div> <div class="wdxgwtnr"> </div> <div class="clear"></div> </div> <!-- 其他随机问答['id'=>alphaID($like['zid'])] --> <div class="wdluluerwema"> <div class="wdxgwttop">最新问答</div> <div class="wdxgwtnr"> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/757320375148099324.html">迪丽热巴的粉丝为什么都长得很丑?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/374385826824750844.html">总是喜欢怀疑自己,因为我是个爱反省的人,每天总会反省有没有说错什么话,做错什么事,是不是对待别人态</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/584449799.html">七龙珠GT最后孙悟空跟神龙去哪里了,还是说孙悟空死了吗?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/84411322.html">我是北科大自动化的,考研考哪个学校比较好?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/46486500.html">QQ魔域怎样让两只幻兽同时使用风珠技能?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/1708662002968197900.html">平安福交了4年,总共交了18000左右,退保能退多少钱?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/418075782.html">已知啊,b是方程x눀-7x+8=0的两个根,且a>b,不解方程,利用根与系数的关系求2⼀a+3b눀的值</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/57041695.html">为什么我QQ跟人聊天时会自动发出图片</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/26616826.html">脑筋急转弯:中国人最早的姓氐是什么?</a></div> </div> <div class="wdxgwtcont"> <div class="wdxgtitle"><a href="https://www.g230.com/1931721364329422667.html">百香果外面发霉了,到底可不可以吃</a></div> </div> </div> </div> </div> <div class="clear"></div> <div class="footer"> <!-- 移动底部导航 --> <div class="fanhuitop"><a href="#top" ref="nofollow"><img src="https://www.g230.com/static/old/img/fhtop.png" alt="返回顶部" title="返回顶部"></a></div> <div class="dibu"> <div class="dibu"> </div> </div> <div class="banquan"> <p>内容全部来源于网络收集,如有侵权,请联系网站删除:QQ:24596024</p> </div> </div> </div> </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?78733b427b0a9dce19688d903e89fc12"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>