不打开是不行的,至少得用代码打开。
sub test()
dim mary(1 to 1024,1 to 1),k as long,myFile as string
dim wb as workbook,sh as workSheet
myFile="D:\我的Excel文件xls" '注:你文件的类型,可能是xlsm或xlsx格式,自行相应改动本行
k=0
set wb=workbooksopen(myfile)
for each sh in wbworksheets
k=k+1
mary(k,1)=shname
next
wbclose 0
with activesheet
[a1]resize(k,1)=mary
end with
end sub
Sub huizong()
ActiveSheetRange("b54:ao200")ClearContents '清除b54:ao200内容
Dim sh As Worksheet,r,r2
For Each sh In Sheets
If InStr(shName, "汇总") = 0 Then
With sh
r = Cells(RowsCount, 8)End(3)Row
r2 = Sheets("汇总")Cells(RowsCount, 8)End(3)Row
Sheets("汇总")Range("a" & r2 + 1)resize(r-53,1) = name
Range("a54:ao" & r)Copy Sheets("汇总")Range("b" & r2 + 1)
End With
End If
Next
End Sub
工作表关于名称的常见属性有CodeName、Name和index 等。你在VBE编辑器左侧看到的sheet1(sheet1),sheet2(sheet3)之类的一列表名,那括号外的就是你在代码使用的sheet1range(A1) 之类引用的,是CodeName(按蹩脚的翻译名字,代码名字,在代码中可以直接使用的名字),这是软件按照你建立工作表的先后顺序自动命名的,无法修改和排序。括号里的sheet1是工作表的Name,也就是你在EXCEL的表格窗口看到的工作表的标签名,这个名字可以随时修改,但是在VBA中sheet1无法作为一个工作表对象直接引用,而是写成sheets("sheet1")。第3个INDEX就是以索引号来表示的sheets(1), 这个是一个表格集合对象内的表格对象的顺序号,这个顺序基本等同于你在表格窗口看到的工作表标签的排列顺序,同一张表有多个名字,就比如人的小名,学名,艺名一样,不管名称叫法如何,指代的都是同一个主体,以上希望你能够采纳。
Sub 表名()
For i = 1 To SheetsCount
Cells(i, 1) = Sheets(i)Name
Next
End Sub
Sub test()
Dim a$, b$
a = ActiveSheetName
MsgBox "此工作表的名称为: " & a, vbOKOnly, "工作表的名称"
b = ThisWorkbookName
MsgBox "此工作簿的名称为: " & b, vbOKOnly, "工作簿的名称"
End Sub
其实用 Dir() 即可直接取得不包含路径的文件名:Sub GetFilNam()
Dim FilNam
FilNam = Dir(ApplicationGetOpenFilename("Excel文件(xls),xls"))
If FilNam = False Then Exit Sub '如果单击“取消”则直接退出程序,以免返回“False”d窗
MsgBox FilNam
End Sub 如果不考虑单击“取消”会返回“False”的问题,那么直接这样更加简洁:Sub GetFilNam()
MsgBox Dir(ApplicationGetOpenFilename("Excel文件(xls),xls"))
End Sub
以上就是关于vba下,如何在不打开文件的情况下,读取excel的工作表的名称,帮我写个函数也行啊全部的内容,包括:vba下,如何在不打开文件的情况下,读取excel的工作表的名称,帮我写个函数也行啊、请增加自动提取工作表名称的VBA代码、在VBA中如何引用工作表的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)