vbs高手请进

2024-12-26 15:33:03
推荐回答(5个)
回答1:

'VBS的,已经测试通过。。。。
'将下面的代码复制到记事本中另存为VBS文件,如不能正常显示则留下EMAIL,直接发给你。
'我在本机测试正常

'比较简单的方法是将你的EXCEL另存为CSV(逗号分隔符)格式
'转换后用记事本打开去掉第一行标题内容(编号,名称),用替换功能将所有的'和"去掉,保存后即可.
'按照下面的操作即可帮你转换文件名

'以下为代码部分,前面是你需要设置的地方
'修改下面的目录为你那些数字文件的目录(后边带/)
Lq_Source_Path="./aaa/"
'修改下面的目录为要保存输出文件保存目录(后边带/)
'(为了安全起见,单独复制到目录,不怕误操作引起数据丢失)
Lq_Target_Path="./bbb/"
'修改下面的目录为要读取的CSV文件(EXCEL转换后的)
Lq_Excel_File="./filename.csv"

'以下内容不要修改,自动执行部分
'下面是要用到的函数
'复制文件到指定位置fso_file_copy(fso_file_copy_old,fso_file_copy_new,fso_file_copy_mod)
'fso_file_copy_old-原始位置,fso_file_copy_new-新位置,fso_file_copy_mod-模式
'0-覆盖文件,1-放弃操作
Sub fso_file_copy(fso_file_copy_old,fso_file_copy_new,fso_file_copy_mod)
on error resume next
Set lq_fso=Createobject("Scripting.FilesystemObject")
Select case fso_file_copy_mod
'覆盖模式
case 0
lq_fso.CopyFile ""&fso_file_copy_old&"",""&fso_file_copy_new&"",true
'取消操作
case 1
lq_fso.CopyFile ""&fso_file_copy_old&"",""&fso_file_copy_new&"",false
'除错
case else
lq_fso.CopyFile ""&fso_file_copy_old&"",""&fso_file_copy_new&"",false
End Select
Set lq_fso=Nothing
End Sub
'转换数字函数
Function Lq_NumS2b(Lq_NumS2b_Str)
If Lq_NumS2b_Str<>"" Then
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"0","零")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"1","一")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"2","二")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"3","三")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"4","四")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"5","五")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"6","六")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"7","七")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"8","八")
Lq_NumS2b_Str=Replace(Lq_NumS2b_Str,"9","九")
End If
Lq_NumS2b=Lq_NumS2b_Str
End Function
'读取文件为数组
'_name-文件名,_str-格式化字符(默认为["@@@"])
Function fso_file_read(fso_file_read_name,fso_file_read_str)
On Error Resume Next
if fso_file_read_str="" then
fso_file_read_str="@@@"
end if
fso_file_read_tmp1=""
if fso_file_read_name<>"" then
Set lq_fso=Createobject("Scripting.FilesystemObject")
if lq_fso.FileExists(""&fso_file_read_name&"") then
Set lq_read = lq_fso.OpenTextFile(""&fso_file_read_name&"",1,True)
Do While Not lq_read.AtEndOfStream
'去掉空行
fso_file_read_tmp2=lq_read.Readline
if fso_file_read_tmp2<>"" then
fso_file_read_tmp1=fso_file_read_tmp1&fso_file_read_tmp2&fso_file_read_str
end if
Loop
lq_read.close
set lq_fso=Nothing
'处理数据
if fso_file_read_tmp1="" then
fso_file_read=Array("")
else
fso_file_read_tmp1=Left(fso_file_read_tmp1,len(fso_file_read_tmp1)-len(fso_file_read_str))
fso_file_read=Split(fso_file_read_tmp1,fso_file_read_str)
end if
'除错处理
else
fso_file_read=Array("")
end if
else
fso_file_read=Array("")
end if
End Function
'检查扩展名
Function lq_check_fext(lq_check_fext_val)
if not isnull(lq_check_fext_val) then
lq_check_fext=mid(lq_check_fext_val,InStrRev(lq_check_fext_val,".")+1,len(lq_check_fext_val)-InStrRev(lq_check_fext_val,"."))
lq_check_fext=lcase(lq_check_fext)
else
lq_check_fext="jlq" '防止出错
end if
End Function

'自动执行操作部分
'读取CSV文件数据为数组(以|分隔)
Lq_File_Arr=fso_file_read(Lq_Excel_File,"|")
'循环转换数据
For I=Lbound(Lq_File_Arr) To Ubound(Lq_File_Arr)
'读取并转换文件名
Lq_Tfile_Arr=Split(Lq_File_Arr(I),",")
'转换要复制出的文件
Lq_Sfile_Name=Lq_NumS2b(Lq_Tfile_Arr(0))&".cgk"
Lq_Tfile_Name=Lq_Tfile_Arr(1)&".cgk"
'复制文件并改新文件名
fso_file_copy Lq_Source_Path&Lq_Sfile_Name,Lq_Target_Path&Lq_Tfile_Name,0
Next
Msgbox "文件转换完成,请到指定目录查看......"

回答2:

还需要VBS,还需要动脑筋???,用简便方法吧

1。在你的文档文件夹内,建立一个文本文件1.txt,内容为:
DIR /o /b > 数据.txt
建好后,把1.txt改成1.bat,然后双击! 你就得到了文件列表,内容为:
03511.cgk
03521.cgk
47386.cgk
。。。。非常整齐,已经按字母排序过了。没有垃圾信息

2。在EXCEL中,把你的表格备份一下,再按“编号” 排序。

3。核对,编号有可能不是按123的顺序。 因为编号是按拼音排序的。 不过我还有一个解决方法,在编号之前新插一列用于辅助。 把编号列复制到辅助列中,然后对这一列替换10次,分别把“零换成0”“一换成1”。 换10次就好了,然后排序

4。在A列新插入一列空白列,每行都用自动填充写上“REN”

5。在B列插入空白列,把1.txt中的内容粘贴到B列。 在最后的空白列中全填写成.cgk

现在,EXCEL中显示为:
A B C D E
命令 旧文件名 辅助 编号 名称 结尾
REN 03511.cgk 03511 零三五一一 94年已归档 .cgk
。。。。。

6。现在,因为B和C都是先排序好的,所以已经一一对应了。 最后一步,删除“辅助”和“编号”这2列

7。把内容全复制到记事本中。
记事本中显示为 (因百度显示关系,我只能用__代替空格)
REN________03511.cgk________94年已归档________.cgk
...........

替换二次,
第一次:把“________.cgk”替换成“.cgk”,注意引号中不是空格,而是按TAB键得到的字符。 EXCEL复制来的数据,列之间都用它分隔,你也可以用复制粘贴来把它填入替换框中

第二次:把“________”(TAB符)替换成“_”(半角空格)

记事本变成:
REN_03511.cgk_94年已归档.cgk

好了,现在改成空格,实际显示的是“REN 03511.cgk 94年已归档.cgk”
。。。

8。成功了,把记事本存成123.bat,放入文档夹子,然后双击!!!

(终于写完了,请不要怕麻烦,为什么? 我打这么多字也挺费劲呢,你操作起来该比我写文章简单吧。 好了去试试,这里面好多操作技巧,一定有你不会的东西,你用VBS终究要调试也要花不少时间,又不能通用。)

回答3:

五哥放羊的方案感觉不错
长知识

回答4:

不懂

回答5:

不会