资源描述:
《用VBA制作Excel翻译程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用VBA制作Excel翻译程序。目的:由于经常进行日文Excel文档的翻译,所以希望用编写VBA程序能让机器自动翻译一部分,并且有中日对译表可以自己编辑和修改。Lib是中日对译表名。UserForm是用户界面,以下有选择要翻译表名的选项,“日翻中”、“中翻日”、“中日对译表维护”等三个按键。功能一览:1程序的调用。2应用界面。3对译表的建立。4每一个单词的替换(可用宏录制)5更换下一个单词,直到所有单词都替换完成,需要循环语句。(难点)5.1更换关键字。(不知怎么会出错,说下标越界,不能排错。卡在这里了)5.2换成下一个关键字,用循环语句。(还没做到这一步,有一定难度,不过应该能解决
2、吧)6问题出现:单词替换时,不能Ctrl+Z返回上一步状态。防止替换错误,需要提前备份。(现在先不管这一步了,先把程序做出来再说)编程设计:我写了一下VBA,但是试运行时出现下标越界的报错,但不知怎么纠错。请各位大侠帮忙!!!PrivateSubUserForm1_tran()MsgBox"程序测试开始!"Sheets("Temp").Cells(1,1).Value=1'Temp是要处理的文档,可改名。'Lib是字典库。'DoDimMyRangeAsRangeMyRange=Sheets(lib).Range("A1")Sheets(temp).Cells("A2")=Sheets
3、(lib).Range(MyRange).Value'IfActiveSheet.Cells(1,6).Value=""Then'Quit'EndIf'变量的使用:错误方式:n=单元格的值;另一个值等于=n。'正确方式:n=单元格的位置,另一个单元格的值=n位置的值。'Dimn'n=Sheets(lib).Cells("A3")'A3'Debug.Printa(i,1)&""&a(i,2)'Loop'选择翻译的范围'进行替换'注意保证字符编码正确'条件循环,将整个对译表的对应翻译全部替换。'Range("C5").Select'Selection.Copy'WithApplicati
4、on.ReplaceFormat.Font'.Name="宋体"'.Subscript=False'EndWith'Cells.ReplaceWhat:="プロジェクト",Replacement:="项目",LookAt:=xlPart,_'SearchOrder:=xlByRows,MatchCase:=False,SearchFormat:=False,_'ReplaceFormat:=TrueTextBox1.Value="程序测试完毕!"MsgBox"日翻中已执行完毕!"EndSub'已完成步骤:过程的代入;文本框、消息框的试用;表值的赋值;注释的加入;'未完成的步骤:变量的
5、使用;表格的替换;字体编码的确保;条件循环语句的使用;能够恢复;要翻译文件的选择;问题补充:程序是凭自己水平尽力做出来的,高手可以帮忙揪一下错,如果看不懂也可以将程序重新设计一下。谢谢!希望各位帮忙的兄弟也可以拿一下具体的代码上来,谢谢!对我有用[0]丢个板砖[0]引用举报管理TOP回复次数:4wang405等 级:#1楼得分:0回复于:2008-10-0420:46:36我花了近一个小时给你又是写又是测试,终于弄出来了你要的.代码不长,但基本是你要的.Subfanyi()OnErrorGoTofanyierrDimcnAsString'中文DimjiAsString'日文Dimmy
6、rangeAsRange'用户选择区域Setmyrange=Application.InputBox("请选择需要翻译的单元格区域:","选择",Type:=8)IfNotmyrangeIsNothingThenn=Sheets("中日表").UsedRange.Rows.Count'中日表中A列日文,B列中文Ifn=1ThenExitSubIfMsgBox("你是否要执行文件翻译功能?",32+vbYesNo,"询问")=vbYesThenSheets("原文").CopyBefore:=Sheets("原文")ActiveSheet.Name="备份"&Format(Date,"
7、YY-MM-DD")&Format(Time,"hhnnss")'日期+时间不会重复Fori=2Tonji=Sheets("中日表").Range("A"&i)cn=Sheets("中日表").Range("B"&i)myrange.Interior.ColorIndex=3myrange.ReplaceWhat:=ji,Replacement:=cn,LookAt:=xlPart,_SearchOrder:=xlByRows,MatchCase:=Fal