For*_*ver 3 debugging excel vba copy excel-vba text-files
我想使用VBA将文本文件中的内容复制到Excel单元格.我可以从大多数文本文件中成功完成此操作.但是在某些文件的情况下,代码只将部分数据复制到excel文件中.
这是我用于复制的代码
Run Code Online (Sandbox Code Playgroud)FileName = folderpath & sFile Set mytextfile = Workbooks.Open(FileName) mytextfile.Sheets(1).Cells.CurrentRegion.Copy ThisWorkbook.Sheets("RawData").Range("A" & inputRow) 'mytextfile.Sheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets("RawData").Range("A" & inputRow) mytextfile.Close (False)
我已经明白了什么问题.在将某些文本文件作为excel文件打开时,一些内容存在于单元格A1中,其余内容存在于单元格A2中.
我不知道为什么会这样打开.我发布下面两个文本文件的内容:
1)在excel中打开时,其内容包含在不同单元格中的文本文件
fwi!3F5A!041!g1ksIpqub7J MCMILLAN J. PIIKKILA RAYMONDBERRY@WEBTV.NET +001 061 477 130 F g3ktHqrwc9 CLE!g1ksIpqub7 CLEHS04C | PO BOX 171 SEARSPORT,ME Nashville 68800 AZ | | 5150 CTY RD 525 Raleigh 64292 | 18000000 0412CL0 1 N 2
当我使用上面的文本文件时,我得到了以下输出.
fwi!3F5A!041!g1ksIpqub7J MCMILLAN J. PIIKKILA RAYMONDBERRY@WEBTV.NET +001 061 477 130 F g3ktHqrwc9 CLE!g1ksIpqub7 CLEHS04C | PO BOX 171 SEARSPORT
2)文本文件,其内容包含在单个单元格A1中
fSj!3U68!071!gQloo3d5OGG Presley Y. TART JR PULPACTION82@HOIMAIL.COM +001 047 475273 M gQmqq6d8ME CVE!gQloo3d5OG CVEGF07C | 10001 SW 125TH CT RD Reno 88595 TN | | 10849 DEBORAH DRIVE Glendale 70958 | 97400000 0712CV0 0 N 0
当我使用上面的文本文件时,我得到了以下输出.
fSj!3U68!071!gQloo3d5OGG Presley Y. TART JR PULPACTION82@HOIMAIL.COM +001 047 475273 M gQmqq6d8ME CVE!gQloo3d5OG CVEGF07C | 10001 SW 125TH CT RD Reno 88595 TN | | 10849 DEBORAH DRIVE Glendale 70958 | 97400000 0712CV0 0 N 0
这两个文件的内容没有明显的区别.
我也试过这段代码但没有任何成功:
FileName = folderpath & sFile
Set mytextfile = Workbooks.Open(FileName)
mytextfile.Sheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets("RawData").Range("A" & inputRow)
mytextfile.Close (False)
Run Code Online (Sandbox Code Playgroud)
小智 5
您没有使用正确的方法来读取*.txt
VBA中的文件.打开文件使用Workbooks.Open()
将打开的文件视为*.csv
.因此,当Excel正在读取流并且发生逗号时,它会将其视为新行分隔符,并将剩余部分(在逗号之后)抛出到下一个单元格.如MSDN Workbooks.Open方法中所述
表达式.Open(FileName ...)
表达式表示Workbooks对象的变量.
显然,Workbook object
不是txt
文件.
读取*.txt
文件内容的正确方法是使用库中的FileSystemObject
和TextStream
对象Microsoft Scripting Runtime
.
我Sub
为你写了一个简单的*.txt
文件读取文件的全部内容.为了使其工作,您必须添加对项目的引用
在VBE窗口中,单击Tools
» References
» 向下滚动,查找并勾选 Microsoft Scripting Runtime
现在,通过以下代码进行筛选并修改*.txt
文件的路径或通过参数传递路径,文件的全部内容*.txt
将放在第一个Sheet Sheet(1)
Cell中A1
Sub ReadTxtFile()
Dim oFSO As New FileSystemObject
Dim oFS As TextStream
Dim fileName As String
' make sure to update your path or
' pass it to the sub through parameter
fileName = "C:\Users\fooboo\Desktop\text.txt"
Set oFS = oFSO.OpenTextFile(fileName)
Dim content As String
content = oFS.ReadAll
With Sheets(1).Range("A1")
.ClearContents
.NumberFormat = "@"
.Value = content
End With
oFS.Close
Set oFS = Nothing
Set oFSO = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4680 次 |
最近记录: |