Excel合并
如何在不同excel之间实现工作表的复制?感谢xwjsyyx的热心帮忙...
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 251, 64, -1, -1)
GUISetIcon("D:\008.ico")
$ButtonOk = GUICtrlCreateButton("确定(&O)", 143, 16, 83, 25, 0)
$Buttonchose = GUICtrlCreateButton("选择数据", 26, 16, 83, 25, 0)
GUISetState(@SW_SHOW)
GUICtrlSetState($Buttonchose,$GUI_FOCUS)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete (@TempDir & "\filename.txt")
Exit
Case $Buttonchose
If FileExists(@TempDir & "\filename.txt") Then FileDelete(@TempDir & "\filename.txt")
$message = "按ctrl或shift选择文件."
$var = FileOpenDialog($message, @DesktopCommonDir & "\", "Excel文件 (*.csv)", 1 + 4)
If @error Then
MsgBox(16, "警告", "没有选中文件")
Else
$v = StringReplace($var, "|", @CRLF) ;
FileWrite(@TempDir & "\filename.txt", $v)
EndIf
Case $ButtonOk
If Not FileExists (@TempDir&"\filename.txt") Then
MsgBox (16,"警告","请先选择数据")
Else
GUICtrlSetState ($Buttonchose ,$GUI_DISABLE)
GUICtrlSetState ($ButtonOk ,$GUI_DISABLE)
$path = FileReadLine(@TempDir&"\filename.txt",1) ;读取路径
$oExcel=ObjCreate("Excel.Application")
$oExcel.Visible = 1
$NEW=$oExcel.WorkBooks.Add
$i = 2
While $i < 200
$file = FileReadLine(@TempDir&"\filename.txt",$i) ;读取文件名
If @error = -1 Then
$MSG = MsgBox (64,"","完成")
If $MSG = 1 Then
GUICtrlSetState ($Buttonchose ,$GUI_ENABLE)
GUICtrlSetState ($ButtonOk ,$GUI_ENABLE)
ExitLoop
EndIf
EndIf
$fpath = $path&"\"&$file ;文件路径
$OPEN=$oexcel.workbooks.open ($fpath)
$name = $oExcel.Activesheet.Cells(2, 10).Value
$oExcel.ActiveSheet.Name = $name
$OPEN.sheets(1).copy (Default,$NEW.sheets($i))
$OPEN.close (0)
$i = $i + 1
WEnd
EndIf
EndSwitch
WEnd
[ 本帖最后由 jydgod 于 2008-5-12 19:39 编辑 ] 有人能帮忙吗??设备测试记录的文件太多..想合并起来... au3的帮助里面有一段这样的文字:
使用 COM 进行自动化操作
一个相当流行的COM操作是"自动化"操作程序.代替正规的Autoit操作函数,如:Send() 或者 WinActivate(),您可以使用对象来制作一个调用对象内部函数的程序.
这里有一个例子,来"自动化"操作Microsoft Excel:
$oExcel = ObjCreate("Excel.Application") ; 创建一个Excel 对象
$oExcel.Visible = 1 ; 显示 Excel 自己$oExcel.WorkBooks.Add ; 添加一个新的工作表
$oExcel.ActiveWorkBook.ActiveSheet.Cells(1,1).Value= "test" ; 填写一个表格
sleep(4000) ; 等待4秒
$oExcel.ActiveWorkBook.Saved = 1 ; 模拟用户保存工作表
$oExcel.Quit ; 退出 Excel
应该会对你有启发,你再去网上看看相关资料吧!具体我也没操作过,不能给你解答了! EXCEL工作表在复制的时候,如果不指定复制的位置的话,会新建一个一个工作表,,不会保存在剪切板内.那个EXCEL的UDF我也看了,解决不了.头疼..难道要复制工作表的内容?:face (13): 建议 提问前先阅读《提问的艺术》 $nExcel = ObjCreate ("Excel.Application")
With $nExcel
.Visible = 1
.WorkBooks.add
EndWith
$opExcel = ObjCreate ("Excel.Application")
With $opExcel
.Visible = 1
.WorkBooks.Open(@ScriptDir&"\3.csv")
EndWith
$opExcel.ActiveWorkbook.Sheets(1).copy (Default, $nExcel.ActiveWorkbook.Sheets(1))
简单的写了一下。可以看出我是什么意思。。哪个高手帮我下。。 ;;试试这个脚本:EXCEL表格导到另一个EXCEL表格
$path1=@ScriptDir&"\a.xls"
$path2=@ScriptDir&"\b.xls"
$yizhi=_excelgetvalue($path1,"Sheet1","B5")
_excelsetvalue($path2,"Sheet1","A4",$yizhi)
Func _excelgetvalue($pathname,$Sheetname,$name)
$xlApp = ObjCreate("Excel.Application") ;创建EXCEL对象
$xlBook = $xlApp.Workbooks.Open($pathname) ;打开已经存在的EXCEL工件簿文件
$xlApp.Visible = False ;设置EXCEL对象可见(或不可见)
$xlSheet = $xlBook.Worksheets($Sheetname) ;设置活动工作表
$re=$xlSheet.Range($name).Value
$xlBook.Close (True) ;关闭工作簿
$xlApp.Quit ;结束EXCEL对象
Return $re
EndFunc
Func _excelsetvalue($pathname,$Sheetname,$name,$value)
$xlApp = ObjCreate("Excel.Application") ;创建EXCEL对象
$xlBook = $xlApp.Workbooks.Open($pathname) ;打开已经存在的EXCEL工件簿文件
$xlApp.Visible = False ;设置EXCEL对象不可见
$xlSheet = $xlBook.Worksheets($Sheetname) ;设置活动工作表
$xlSheet.Range($name).Value=$value
$xlBook.Close (True) ;关闭工作簿
$xlApp.Quit ;结束EXCEL对象
EndFunc
[ 本帖最后由 xwjsyyx 于 2008-5-13 21:59 编辑 ] 谢啦,我搞定了..公司网坏了.没上传 建议:
$var = FileOpenDialog($message, @DesktopCommonDir & "\", "Excel文件 (*.csv)", 1 + 4)
$var可变为数组,所以可以不用新建filename.txt文件!
$v = StringSplit($var,"|")
for $i=2 to $v
$fpath = $v&"\"&$v[$i] ;文件路径
next 原帖由 xwjsyyx 于 2008-5-13 22:40 发表 http://www.autoitx.com/images/common/back.gif
建议:
$var = FileOpenDialog($message, @DesktopCommonDir & "\", "Excel文件 (*.csv)", 1 + 4)
$var可变为数组,所以可以不用新建filename.txt文件!
$v = StringSplit($var,"|")
for $i=2 to $v
...
谢谢.....:face (29): 偶像...我刚学还不知道这个东西...又学会一点.. 好思路,谢谢楼主 恩,来学习学习哈
页:
[1]