fanjy 版主
| 2楼 大 中 小 发表于 2006-8-2 00:03 只看该作者 问题2:如何禁用用户窗体的关闭按钮? Public OrgWB As Workbook
|
VBA编程问答(第1辑)VBA编程问答 附件
| |
fanjy 版主
| 2楼 大 中 小 发表于 2006-8-2 00:03 只看该作者 问题2:如何禁用用户窗体的关闭按钮? Public OrgWB As Workbook
|
fanjy 版主
| 3楼 大 中 小 发表于 2006-8-2 00:05 只看该作者 问题4:如何将同一文件夹中的多个文本文件读入到工作簿中? 解答:通常,我们所看到的例子都是在工作簿中读入一个文本文件中的内容。假设有几个文本文件,我们把它们放在与工作簿相同的文件夹中,那么,现在如何在该工作簿中一次性读取这几个文本文件的内容。下面的程序演示了上述过程,示例工作簿附后,其中源数据引用了lichaobin网友在他的提问贴中所附的数据。 分两种情况: (一)所读入的文本文件总行数小于65536行,您可以使用以下代码。 ‘************************************************** Sub Sample1() Dim n As Long, a(), ff As Integer, txt As String, myDir As String, x Dim myF As String, i As Long myDir = ThisWorkbook.Path & Application.PathSeparator myF = Dir(myDir & "*.txt") Do While myF <> "" ff = FreeFile Open myDir & myF For Input As #ff Do While Not EOF(ff) Line Input #ff, txt x = Split(txt, "|") n = n + 1 ReDim Preserve a(1 To n) a(n) = x Loop Close #ff myF = Dir() Loop Cells.Clear With ThisWorkbook.Worksheets("Sheet1").Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With End Sub ‘************************************************** (二)所读入的文本文件总行数大于65536行,您可以使用以下代码。其中使用了一个变量t和一个判断语句,当多于65536行时,将剩下的数据写入另一工作表中。 Sub Sample2() Dim n As Long, a(), ff As Integer, txt As String, myDir As String, x Dim myF As String, i As Long, t As Integer t = 1 myDir = ThisWorkbook.Path & Application.PathSeparator myF = Dir(myDir & "*.txt") Do While myF <> "" ff = FreeFile Open myDir & myF For Input As #ff Do While Not EOF(ff) Line Input #ff, txt x = Split(txt, "|") n = n + 1 ReDim Preserve a(1 To n) a(n) = x If n = 65536 Then With ThisWorkbook.Sheets(t).Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With n = 0: Erase a: t = t + 1 End If Loop Close #ff myF = Dir() Loop If n > 0 Then With ThisWorkbook.Sheets(t).Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With End If End Sub 示例文档见读取多个文本文件.rar。 E27ouF6l.rar (53.87 KB) |
fanjy 版主
| 4楼 大 中 小 发表于 2006-8-2 00:07 只看该作者 问题5:如何使用VBA删除所有的空工作表? =================================================================== 问题11:如何将工作簿中其它工作表名导入到指定的工作表中? 解答:本问题即将工作簿中除指定的工作表(如名为Name的工作表)外的其它的工作表名导入到指定的工作表中(即Name工作表中)。您可以使用下面的代码。 ‘************************************************** Sub Test() Dim ws As Worksheet Dim i As Long, j As Long Worksheets("Name").Range("A:A").Clear i = Worksheets("Name").Range("A65536").End(xlUp).Row For Each ws In Worksheets If ws.Name <> "Name" Then Worksheets("Name").Cells(i, 1) = ws.Name i = Worksheets("Name").Range("A65536").End(xlUp).Row + 1 End If Next ws End Sub =================================================================== 问题12:如何在单元格中快速输入带秒的时间? 解答:一般,在Excel中快速输入日期和时间时,可使用快捷键,即按Ctrl+:组合键将快速在单元格中输入当前日期,按Ctrl+Shift+:组合键将快速在单元格中输入当前时间,但所显示的时间为“小时:分钟”格式,不会显示秒。如果您想显示“小时:分钟:秒”这样的格式的话,可以使用Onkey方法修改快捷键的缺省设置,如下所示,运行“设置快捷键”代码即可。 ‘************************************************** Sub 设置快捷键() Application.OnKey "+^:", "输入时间" End Sub ‘************************************************** Sub 恢复快捷键() Application.OnKey "+^:" End Sub ‘************************************************** Sub 输入时间() With ActiveCell .Value = Time() .NumberFormat = "hh:mm:ss" End With End Sub 如果您想恢复快捷键的缺省设置,运行“恢复快捷键”过程。
By fanjy in 2006-8-1 |
联系客服
微信登录中...
请勿关闭此页面