怎样把已经打开的EXCEL表的单元格的值赋予变量(已解决)
本帖最后由 wsxjwsxj 于 2013-4-15 23:33 编辑#include <excel.au3>
#include<file.au3>
Opt("WinWaitDelay",1) ;更改每次成功执行窗口相关操作后的延迟时间长度。以毫秒为单位(默认值 = 250)。
Opt("WinTitleMatchMode",4) ;更改窗口函数在执行搜索操作时的标题匹配模式。4 = 高级模式
Opt("WinDetectHiddenText",1) ;指定是否让隐藏的窗口文本也能被窗口匹配函数“看见”(1 = 检测隐藏文本)。
Opt("MouseCoordMode",0) ;设置用于鼠标函数的坐标参照,可以是绝对位置也可以是相对当前激活窗口的坐标位置(0)。
Dim $Xls_File = FileOpenDialog("请选择Excel文件-----",@ScriptDir & "\","xls文件 (*.xls)",1)
$oExcel = _ExcelBookOpen($Xls_File, 1)
dim $aa
$aa = $oExcel.ActiveSheet.cells(2,1).value
msgbox(4096,"查出变量$AA的值",$aa,100)
msgbox(4096,"查出$oExcel的值",$oExcel,100)
=================================================
上面这段代码,可以把打开EXCEL文件,并把活动表的单元格A2的值传给变量。
$AA的值可以看到,但$oExcel的值却是空的呢?
另外想问的是:如果我已经打开了EXCEL表,怎么样定义$oExcel ?
花了好长时间,也只能做到,每次运行程序的时候要重新打开EXCEL表一次。请各位高手帮忙!!
我的问题是,如果 我是想做个程序,把已经打开的EXCEL表中各单元格中的数值先存在变量中,然后进入另外一个软件的窗口,把各个变量的值再传给相应的表格中。
在写代码的过程中,$aa = ActiveSheet.cells(2,1).value
这句总是出问题,不得已,才抄的打开EXCEL文件的语句,来解决$oExcel.的问题。 凑合能用了。但是,如果EXCEL是打开的呢,这个程序还会再打开一次。高手看过来哦。 用一下_ExcelBookAttach 这个函数,我在EXCEL.AU3里面看到了,但是没有例子,不知道该怎么用. 在百度上搜索了,也没有相关的说明, 还麻烦您给具体的改一改吧.多谢了! 回复 4# wsxjwsxj
示例:; **************************************************************************************************************
; 示例 1 - 基于所选择的模式附加到第一个匹配字符串的Microsoft Excel的实例上.
; **************************************************************************************************************
#include <Excel.au3>
#include <File.au3>
Local $sFilePath = @TempDir & "\Temp.xls"
If Not _FileCreate($sFilePath) Then ;创建一个.XLS文件
MsgBox(4096, "错误", " 创建文件时出错 - " & @error)
EndIf
_ExcelBookOpen($sFilePath)
Local $oExcel = _ExcelBookAttach($sFilePath) ;搜索模式: Excel工作表路径(默认模式)
_ExcelWriteCell($oExcel, "看到了吗?写入信息成功了!", 1, 1) ;对指定的Excel工作表单元格写入信息.
MsgBox(4096, "退出", "按[确定]保存文件并退出")
_ExcelBookClose($oExcel, 1, 0);在没有任何提示的情况下保存该文件,然后关闭.
; **************************************************************************************************************
; 示例 2 - 基于所选择的模式附加到第一个匹配字符串的Microsoft Excel的实例上.
; **************************************************************************************************************
#include <Excel.au3>
#include <File.au3>
$sFilePath = @TempDir & "\Temp.xls"
If Not _FileCreate($sFilePath) Then;创建一个.XLS文件
MsgBox(4096, "错误", " 创建文件时出错 - " & @error)
EndIf
_ExcelBookOpen($sFilePath)
$oExcel = _ExcelBookAttach("Temp.xls", "FileName") ;搜索模式: Excel工作表的名称
_ExcelWriteCell($oExcel, "看到了吗?写入信息成功了!", 1, 1) ;对指定的Excel工作表单元格写入信息.
MsgBox(4096, "退出", "按[确定]保存文件并退出")
_ExcelBookClose($oExcel, 1, 0);在没有任何提示的情况下保存该文件,然后关闭.
; **************************************************************************************************************
; 示例 3 - 基于所选择的模式附加到第一个匹配字符串的Microsoft Excel的实例上.()
; **************************************************************************************************************
#include <Excel.au3>
#include <File.au3>
$sFilePath = @TempDir & "\Temp.xls"
If Not _FileCreate($sFilePath) Then ;创建一个.XLS文件
MsgBox(4096, "错误", " 创建文件时出错 - " & @error)
EndIf
_ExcelBookOpen($sFilePath)
$oExcel = _ExcelBookAttach("Microsoft Excel - Temp", "Title") ;搜索模式: Excel工作表的窗口标题
_ExcelWriteCell($oExcel, "看到了吗?写入信息成功了!", 1, 1) ;对指定的Excel工作表单元格写入信息.
MsgBox(4096, "退出", "按[确定]保存文件并退出")
_ExcelBookClose($oExcel, 1, 0) ;在没有任何提示的情况下保存该文件,然后关闭. 在百度上找到一个答案,说是_ExcelBookAttach的作用是找出路径。没有解释,没有例子。 在线焦急等。
msgbox(4096,"查出$oExcel的值",$oExcel,100) 这句代码,为什么得出的是空值呢? $oExcel 是个对象吧? #include <excel.au3>
#include<file.au3>
Opt("WinWaitDelay",1) ;更改每次成功执行窗口相关操作后的延迟时间长度。以毫秒为单位(默认值 = 250)。
Opt("WinTitleMatchMode",4) ;更改窗口函数在执行搜索操作时的标题匹配模式。4 = 高级模式
Opt("WinDetectHiddenText",1) ;指定是否让隐藏的窗口文本也能被窗口匹配函数“看见”(1 = 检测隐藏文本)。
Opt("MouseCoordMode",0) ;设置用于鼠标函数的坐标参照,可以是绝对位置也可以是相对当前激活窗口的坐标位置(0)。
$oExcel = _ExcelBookAttach("测试表.xls", "FileName") ;搜索模式: Excel工作表的名称,。
dim $aa,$bb
WinWait("Microsoft Excel - 测试表.xls","")
If Not WinActive("Microsoft Excel - 测试表.xls","") Then WinActivate("Microsoft Excel - 测试表.xls","")
WinWaitActive("Microsoft Excel - 测试表.xls","")
$aa = $oExcel.ActiveSheet.cells(2,1).value
$bb = $oExcel.ActiveSheet.cells(2,2).value
msgbox(4096,"12345678",$aa,100)
msgbox(4096,"7778899",$bb,100) 非常感谢Darren_Lin,用了$oExcel = _ExcelBookAttach("测试表.xls", "FileName")这条语句后,达到了我想要的结果。就是可以直接从已经打开的EXCEL中取值。 “直接从已经打开的EXCEL中取值”
学习标记
页:
[1]