找回密码  加入

AUTOIT CN

搜索
查看: 521|回复: 16

[AU3基础] 如何获取当前excel工作表中的当前单元格所在的列名?

[复制链接]
发表于 2018-9-11 16:29:54 | 显示全部楼层 |阅读模式
我需要知道当前excel工作表中的当前单元格所在的列名,以便当光标移动后,再返回这个单元格。在论坛上找了很多操作excel的帖子,也没有找到相关的内容,请大师帮助我解决一下,万分感谢!!!!
发表于 2018-9-11 19:17:05 | 显示全部楼层
参考以下说明:

Range.Address 属性
返回一个 String 值,它代表宏语言的区域引用。
语法

表达式.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

表达式   一个代表 Range 对象的变量。

参数

名称 必选/可选 数据类型 描述
RowAbsolute 可选 Variant 如果为 True,则以绝对引用返回引用的行部分。默认值为 True。
ColumnAbsolute 可选 Variant 如果为 True,则以绝对引用返回引用的列部分。默认值为 True。
ReferenceStyle 可选 XlReferenceStyle 引用样式。默认值为 xlA1。
External 可选 Variant 如果为 True,则返回外部引用。如果为 False,则返回本地引用。默认值为 False。
RelativeTo 可选 Variant 如果 RowAbsolute 和 ColumnAbsolute 为 False,并且 ReferenceStyle 为 xlR1C1,则必须包括相对引用的起始点。此参数是定义起始点的 Range 对象。

说明


如果引用包含多个单元格,RowAbsolute 和 ColumnAbsolute 将应用于所有的行和列。



示例


下例对工作表 Sheet1 中的同一单元格地址使用了四种不同的表达方式。示例中的注释为将要显示于消息框中的地址。

Visual Basic for Applications
Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address()                              ' $A$1
MsgBox mc.Address(RowAbsolute:=False)            ' $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1)        ' R1C1
MsgBox mc.Address(ReferenceStyle:=xlR1C1, _
    RowAbsolute:=False,     _
    ColumnAbsolute:=False,  _
    RelativeTo:=Worksheets(1).Cells(3, 3))        ' R[-2]C[-2]
 楼主| 发表于 2018-9-12 03:44:43 | 显示全部楼层
h20040606 发表于 2018-9-11 19:17
参考以下说明:

Range.Address 属性

感谢大师的热心帮助,但是我是想用autoit来操作Excel,并定位当前单元格地址,并且在移动了光标后,再返回先前定位的单元格。请问要如何写一段简单的脚本呢?
发表于 2018-9-12 07:05:54 | 显示全部楼层
试一下
$row=$Excel.activesheet.activecell.row
$col=$Excel.activesheet.activecell.Column
-----其他操作
-$$Excel.activesheet.cells($row,$col).activate
 楼主| 发表于 2018-9-12 20:34:55 | 显示全部楼层
h20040606 发表于 2018-9-12 07:05
试一下
$row=$Excel.activesheet.activecell.row
$col=$Excel.activesheet.activecell.Column

您好,大师,我试了一下你的代码,还是报错。请帮我看一下。

#include <excel.au3>

$excel=objcreate("excel.application")
$excel.visible=true
WinActivate('test.xlsx - Excel')
Sleep(1000)
$row=$Excel.activesheet.activecell.row
$col=$Excel.activesheet.activecell.Column
Sleep(1000)
Send("{right 9}")
Sleep(1000)
$Excel.activesheet.cells($row,$col).activate

报错信息如下:
>运行:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\mega\ledwork\autoit\b2.au3"   
--> 按 Ctrl+Alt+Break 重新启动或按 Ctrl+Break 停止
"D:\mega\ledwork\autoit\b2.au3" (16) : ==> The requested action with this object has failed.:
$row=$Excel.activesheet.activecell.row
$row=$Excel.activesheet^ ERROR
->14:33:26 AutoIt3.exe 结束.rc:1
+>14:33:26 AccAu3Wrapper 完成.

发表于 2018-9-13 09:47:55 | 显示全部楼层
本帖最后由 h20040606 于 2018-9-13 09:48 编辑

#include <excel.au3>
$obj=_Excel_Open(1)
$obj.visible=true
$Excel=_Excel_BookOpen($obj,"c:\test.xlsx")
;光标移动到A3
$Excel.activesheet.range("a3").select
$Excel.activesheet.range("a3").activate
$row=$obj.activecell.row
$col=$obj.activecell.Column

;光标移动到f5
Sleep(3000)
$Excel.activesheet.cells(5,6).Select
$Excel.activesheet.cells(5,6).activate

;恢复元光标位置
Sleep(3000)
$Excel.activesheet.cells($row,$col).select
$Excel.activesheet.cells($row,$col).activate
发表于 2018-9-13 09:58:47 | 显示全部楼层
本帖最后由 h20040606 于 2018-9-13 12:34 编辑

#include <excel.au3>
$obj=_Excel_Open(1)
$obj.visible=true
$Excel=_Excel_BookOpen($obj,"c:\test.xlsx")
;光标移动到A3
$Excel.activesheet.range("a3").select
$Excel.activesheet.range("a3").activate
$addr=$obj.selection.address

;光标移动到f5
Sleep(3000)
$Excel.activesheet.cells(5,6).Select
$Excel.activesheet.cells(5,6).activate

;恢复元光标位置
Sleep(3000)
$Excel.activesheet.range($addr).select
$Excel.activesheet.range($addr).activate