在vba中手动创建制表符分隔的文本文件
我正在尝试使用Access中的vba创建制表符分隔的文本文件。这个文件实质上是从表中读取数据,并且在文件的开头有一些文本字符串。其目的是创建可在其他软件(Autodesk Revit)中读取的共享参数文本文件 我遇到的问题是,我导出的文件似乎不是以制表符分隔的文件。我可以通过尝试将其导入excel进行测试,但它无法将其识别为以制表符分隔的文件 下面的代码片段显示了我编写的代码。运行它,然后尝试在Excel中导入,表明它不是作为制表符分隔的文件读取的。为了方便起见,我已经注释掉了读取数据库的部分,因为它与实际问题无关在vba中手动创建制表符分隔的文本文件,vba,ms-access,unicode,Vba,Ms Access,Unicode,我正在尝试使用Access中的vba创建制表符分隔的文本文件。这个文件实质上是从表中读取数据,并且在文件的开头有一些文本字符串。其目的是创建可在其他软件(Autodesk Revit)中读取的共享参数文本文件 我遇到的问题是,我导出的文件似乎不是以制表符分隔的文件。我可以通过尝试将其导入excel进行测试,但它无法将其识别为以制表符分隔的文件 下面的代码片段显示了我编写的代码。运行它,然后尝试在Excel中导入,表明它不是作为制表符分隔的文件读取的。为了方便起见,我已经注释掉了读取数据库的部分,
Public Function ExportRevitSharedParameterFile()
Dim rst As DAO.Recordset
Dim header As String
Dim metaHeader As String
Dim groupHeader As String
Dim paramHeader As String
Dim metaData As String
Dim groupData As String
Dim paramData As String
header = "# This is a Revit shared parameter file." & vbCrLf & "# Do not edit manually."
metaHeader = "*META" & vbTab & "VERSION" & vbTab & "MINVERSION"
groupHeader = "*GROUP" & vbTab & "ID" & vbTab & "NAME"
paramHeader = "*PARAM" & vbTab & "GUID" & vbTab & "NAME" & vbTab & "DATATYPE" & vbTab & "DATACATEGORY" & vbTab & "GROUP" & vbTab & "VISIBLE" & vbTab & "DESCRIPTION" & vbTab & "USERMODIFIABLE"
Set fs = CreateObject("Scripting.FileSystemObject")
' This path may need to be changed to an appropriate location with permission access
Set a = fs.CreateTextFile("C:\sp.txt", True, True)
a.WriteLine (header)
a.WriteLine (metaHeader)
metaData = "META" & vbTab & "2" & vbTab & "1"
a.WriteLine (metaData)
a.WriteLine (groupHeader)
'Write some data from an access table
'Set rst = CurrentDb.OpenRecordset("SP File - Groups", dbOpenSnapshot)
'Do While Not rst.EOF
' groupData = "GROUP" & vbTab & rst![Group ID] & vbTab & rst![Group Name]
' a.WriteLine (groupData)
' rst.MoveNext
'Loop
'rst.Close
'Set rst = Nothing
a.WriteLine (paramHeader)
'Write some data from an access table
'Set rst = CurrentDb.OpenRecordset("SP File - Parameters", dbOpenSnapshot)
'Do While Not rst.EOF
' paramData = "PARAM" & vbTab & rst![Parameter GUID] & vbTab & rst!Name & vbTab & rst![Revit Type] & vbTab & "" & vbTab & rst![Group ID] & vbTab & "1" & vbTab & "" & vbTab & "1"
' a.WriteLine (paramData)
' rst.MoveNext
'Loop
'rst.Close
'Set rst = Nothing
a.Close
End Function
在此方面的任何帮助都将不胜感激。我显然缺少一些关于如何创建制表符分隔文件的信息。一个“常规”制表符分隔值(TSV)文件如下所示,列数恒定:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| Data | Data | Data |
| Data | Data | Data |
+------+------+------+
您的文件以两行开头,其中没有选项卡:
header = "# This is a Revit shared parameter file." & vbCrLf & "# Do not edit manually."
确定文本文件的结构时,Excel会查看前几行(我想是5行或10行)和扩展名。在您的情况下,文件被识别为“纯文本”
要使Excel将您的文件识别为TSV,请尝试以下操作:
- 拆下前两行
- 将其从
重命名为.txt
.tsv
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| Data | Data | Data |
| Data | Data | Data |
+------+------+------+
您的文件以两行开头,其中没有选项卡:
header = "# This is a Revit shared parameter file." & vbCrLf & "# Do not edit manually."
确定文本文件的结构时,Excel会查看前几行(我想是5行或10行)和扩展名。在您的情况下,文件被识别为“纯文本”
要使Excel将您的文件识别为TSV,请尝试以下操作:
- 拆下前两行
- 将其从
重命名为.txt
.tsv
但真正的测试当然是:目标软件(Autodesk)是否可以处理该文件?谢谢!这非常有助于理解我为什么在某些情况下使用excel,具体取决于我导出到文件中的内容。它最初在软件中不起作用。不过,多亏了你上面的解释,我开始更仔细地查看文件应该读取的内容,并发现了一个错误。干杯,谢谢!这非常有助于理解我为什么在某些情况下使用excel,具体取决于我导出到文件中的内容。它最初在软件中不起作用。不过,多亏了你上面的解释,我开始更仔细地查看文件应该读取的内容,并发现了一个错误。干杯