⑴ vba 如何当前excel 打开txt文件后并将txt文件保存为EXCEL
如果txt文件中的数据是由逗号分隔,试试下面的代码:
Sub TXT导入到EXCEL() '把由逗号分隔的TXT数据导入EXCEL
Application.ScreenUpdating = False '关闭屏幕刷新
Const ForReading = 1 '打开一个只读文件
Set fso = CreateObject("Scripting.FileSystemObject") '创建文本对象
Set fd = Application.FileDialog(msoFileDialogOpen) '创建“打开”对话框对象
If fd.Show = -1 Then '如果选择了文件
FileName = fd.SelectedItems(1) '记录文件路径(指定文本文件名)
Else '如果没有选择文件
MsgBox "没有选择文件,请重新操作!", , "导入到EXCEL"
Exit Sub '退出程序
End If
Set sFile = fso.OpenTextFile(FileName, ForReading) '创建并打开名为sFile的TextStream对象
i = 1 '设置输入单元格的起始行号
Do While Not sFile.AtEndOfStream '如果不是文本文件的尾端,则读取数据
LineText = sFile.ReadLine '从文本文件中依次读取一行数据为字符串
d = InStr(LineText, ",") '计算这行数据从左向右第一个全角逗号的位置
If d > 0 Then '如果全角逗号存在
TH = Replace(LineText, ",", ",") '把字符串中的全角逗号替换成半角逗号
FJ = Split(TH, ",") '把由半角逗号分隔的字符串TH写入数组FJ
ElseIf d = 0 Then '如果全角逗号不存在
FJ = Split(LineText, ",")
End If
For iCol = LBound(FJ) To UBound(FJ) '从数组中读取数据并写入对应的单元格
ThisWorkbook.ActiveSheet.Cells(i, iCol + 1) = FJ(iCol)
Next iCol
i = i + 1 '滚动到下一个写入数据的单元格行
Loop
sFile.Close
Set fso = Nothing
Set fd = Nothing
Set sFile = Nothing
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
注意:
按Alt+F11打开宏编辑器,插入模块,粘贴上述代码后,在要导入TXT文件的当前工作表中制作一个命令按钮链接宏即可操作。
⑵ Excel vba 这个打开文本文件的#号是个固定用法,还是随便定义的
这个叫做文件号。
用来标识文件的,因为可能会同时打开多个文件,所以就需要区别,系统就是根据这个文件号来区别不同文件的。
文件号的范围为1-511 ,只要没有被使用,你就可以随意在这个范围内用一个。
因为通常只同时打开一个文件,所以基本上都是用#1了,你用#100 #500 也是一样可以的。
反正就是不能在关闭一个文件之前再用这个文件号,关闭文件后文件号会释放,则可以再次使用。
---------------------------------------------------------------------------------
也可以用freefile 函数来获得一个可以使用的文件号
FreeFile 函数
请参阅 示例 特性
返回一个 Integer,代表下一个可供
Open 语句使用的文件号。
语法
FreeFile[(rangenumber)]
可选的参数 rangenumber 是一个 Variant,它指定一个范围,以便返回该范围之内的下一个可用文件号。指定
0(缺省值)则返回一个介于 1 – 255 之间的文件号。指定 1 则返回一个介于 256 – 511 之间的文件号。
说明
使用 FreeFile 提供一个尚未使用的文件号。
-------------------------------------------------------------------------------
FreeFile 函数示例
本示例使用 FreeFile
函数来返回下一个可用的文件号。在循环中,共打开五个输出文件,并在每个文件中写入一些数据。
Dim MyIndex, FileNumber
For MyIndex = 1 To 5 ' 循环五次。
FileNumber = FreeFile ' 取得未使用的文件号。
Open "TEST" & MyIndex For Output As #FileNumber ' 创建文件名。
Write #FileNumber, "This is a sample." ' 输出文本至文件中。
Close #FileNumber ' 关闭文件。
Next MyIndex
⑶ excel vba读取文本文件
Subs()
OpenThisWorkbook.Path&"a.txt"ForInputAs#1
k=9
DoWhileNotEOF(1)
LineInput#1,a
a=Application.Trim(Replace(a,"--",""))
Cells(k,2).Resize(1,3)=Split(a)
k=k+1
Loop
Close#1
EndSub
⑷ 如何用EXCEL的VBA代码关闭已经打开的文本文件
给你举个例子:
Subtest11()
OpenThisWorkbook.Path&"output.txt"ForOutputAs#1'在#1打开当前文件夹中的output.txt文件
str1="123"
str2="你好吗"
str3="hello"
Print#1,str1,str2,str3,Date'写入内容
Write#1,str1,str2,str3,Date'写入内容
Close#1'关闭#1这个文件
EndSub
程序会在output.txt文件内生成两列内容如下:
123 你好吗 hello 2013-11-22
"123","你好吗","hello",#2013-11-22#
说明:ThisWorkbook.Path表示相对路径,是指当前vba对应宏文件所在的文件夹,当前的output.txt与vba对应的宏文件是同文件夹。
⑸ excel中如何实现用VBA的ope函数打开某个txt文件
open打开文件需要有个完全的路径名称,
建议先使用GetOpenFilename获取需要打开的文件全名称.
再使用open进行文件流操作.
dim count as long
Dim Filt As String
Dim FilterIndex As Integer
Dim Title As String
Dim File As Variant
Dim fText As String
'创建文件筛选列表
Filt = "Text Files (*.txt),*.txt,"
'默认显示*.*
FilterIndex = 1
'设置对话框标题
Title = "打开文本文件"
'获取文件路径以及文件名
File = Application.GetOpenFilename _
(FileFilter:=Filt, _
FilterIndex:=FilterIndex, _
Title:=Title)
'如果取消对话框则退出
If File = False Then
MsgBox "您未选择文件"
Exit Sub
End If
'excel获取文本数据
Open File For Input As #1
count = 0
Do While Not EOF(1)
count = count + 1
Line Input #1, fText
Worksheets("Sheet1").Cells(count, 1).Value = fText
Loop
Close #1
⑹ Excel里VBA链接打开文本文件怎么写,用记事本打开
End Sub notepad 是记事本的系统程序名,其他程序需要完整路径和完整程序文件名了。要打开的文本文件可以在notepad后加空格后再加上完整路径和完整文本文件名。这样就ok了!希望帮到您哦!
⑺ 用vba语言,打开多个txt文件,打开的形式为excel格式
以下是使用宏录制的方法获得的代码:
Sub宏2()
'我是使用excel打开的一个D: est1.txt
ChDir"D: est"
Workbooks.OpenTextFilename:="D: est1.txt",Origin:=936,StartRow:=1,_
DataType:=xlDelimited,TextQualifier:=xlDoubleQuote,ConsecutiveDelimiter_
:=False,Tab:=False,Semicolon:=False,Comma:=False,Space:=False,_
Other:=True,OtherChar:="、",FieldInfo:=Array(1,1),TrailingMinusNumbers_
:=True
Windows("工作簿1").Activate
EndSub
更为简洁的是直接这样:
Workbooks.OpenText Filename:="D: est1.txt"
⑻ excel vba打开excel文件
不知道这样符不符合你的要求(一个打开,一个恢复显示回):
Sub 后台打开答()
Application.ScreenUpdating = False
Workbooks.Open Filename:="D:\excel.xls"
ActiveWindow.Visible = False
Application.ScreenUpdating = True
End Sub
Sub 取消隐藏()
Windows("excel.xls").Visible = True
End Sub
⑼ excel中vba中用FileDialog以记事本打开文本文件
Sub打开文件()
WithApplication.FileDialog(msoFileDialogOpen)
.AllowMultiSelect=True
.Filters.Add"文本文件","*.txt",1
.InitialFileName="g:123"
.InitialView=msoFileDialogViewDetails
.Title="打开"
If.Show=0ThenExitSub
Filename=.SelectedItems(1)
EndWith
Shell"notepad"&Filename,vbNormalFocus
EndSub
⑽ 如何用excel的VBA来打开C盘文本文件
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Range("C1").Value > 0 Then
Shell "notepad C:\mybook.txt"
End If
End Sub