mp3用vba程序写u盘和fm卡
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mp3文件用vba程序写u盘或fm卡
往u盘或fm卡上拷贝文件本来没有什么特殊之处,但对于mp3歌曲和评书,必须按照预定的1、2、3、... (或i、i+1、i+2、...,其中i=1,2,3, ...)的次序存放在u盘或fm卡的文件表上,才能保证随身听等类似设备按预定的次序播放。可能是由于,文件在源目录的文件分配表中,不是按我们想要的次序排列的,wiondows的拷贝命令往往做不到按我们想要的次序拷贝。现利用excel中vba程序,可以实现对文件进行按预定次序,实际就是文件名的次序,拷贝。
→读源文件夹中的文件名,存放在工作表的b列→对文件名升序排序→模拟手工操作,按文件名的次序一个一个向u盘或fm卡拷贝文件,同时显示进度→打开目标目录文件夹,以备观察拷贝结果→在windows窗口中,文件名总是按文件名的顺序排列的。为了观察文件在文件分配表中的排列次序,可以进入命令提示符窗口,利用dos命令dir进行观察。实际上,运行我们的vba程序,当读完文件名,还没有进行排序的时候,文件名的排列次序与在命令提示符窗口中用dos命令dir观察到的文件名次序是完全一致的。
程序以工作表作为工作界面,在工作上放臵2个文本框控件,2个标签控件,1个命令按钮控件,如图所示。文本框中的源文件夹字符串和目标文件夹字符串作为向vba程序传递的参数。
程序的利用的vba资源主要有:① dir函数,②从记录的宏中引用过来的排序语句组,③ CopyFile方法,④ sheel 函数,⑤ ProgressBar进度条。对于这些资源的使用,程序中已有适当的注释,至于详细使用方法还应参考“帮助”。CopyFile 方法也可用FileCopy语句代替,而后者的使用方法可能更简洁一些。对于ProgressBar进度条的使用方法,程序中也有必要的注释,如需详细了解,还应通过试验,对它的各项属性仔细研究一番。经试验,该进度条的效果还有一些问题。
Private Sub CommandButton1_Click()
Dim t As Integer
Dim s As String
Dim d As String
d0 = 源文件夹 ' 源目录
d1 = 目标文件夹 ' 目标目录
' 读文件名
t = 1
s = Dir(d0 & "*.mp3") ' 读第一个文件名
Cells(t, 2) = s
Do While s <> ""
t = t + 1
s = Dir() ' 读下一个文件名时,不要带参数。带括号或者不带括号
Cells(t, 2) = s
Loop
' 对读出的文件名排序。排序的语句组是通过记录宏得到的
'Range("b1:b" & CStr(t - 1)).Select '选择要排序的区域,注意在Range中使用可变参数的技巧
'ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear '对文件名排序
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("b1:b" & CStr(t - 1)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").Sort
.SetRange Range("b1:b" & CStr(t - 1))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' 对排序后的文件名加上序号
For i = 1 To t - 1
Cells(i, 1) = i
Next
' 文件拷贝,带进度条
ProgressBar21.Visible = False ' 进度条设臵
ProgressBar21.Max = t - 1 '
ProgressBar21.Min = 0 '
ProgressBar21.Value = 0 '
ProgressBar21.Visible = True ' 显示进度条
Dim fs As Object ' CopyFile是vba方法法,使用先说明目标
Set fs = CreateObject("Scripting.FileSystemObject") ' 然后对创建目标
For i = 1 To t - 1
fs.CopyFile d0 & Cells(i, 2), d1 & Cells(i, 2) ' 将文件从源目录拷贝到目标目录。
ProgressBar21.Value = i ' 进度变化
Next
'For i = 1 To t - 1 'FileCopy是vba语句,用途和用法与CopyFile方法类似,列此以资比较 ' FileCopy d0 & Cells(i, 2), d1 & Cells(i, 2)
' ProgressBar21.Value = i ' 进度变化
'Next
ProgressBar21.Visible = False '关闭进度条
ret = Shell("explorer.exe " & d1, vbNormalFocus) ' 打开目标文件夹,显示拷贝的文件
End Sub