好的,我知道Select是痛苦的......并且已在这里多次讨论过。但是这里解决的问题都没有帮助我。
我从MS Access运行以下代码,它导出一些数据,我需要在客户端打开导出的工作簿时,活动单元格设置在页面的左上角&#34; Intro&#34;。< / p>
我最近升级到Office 2013,代码停止工作。此代码适用于我以前版本的Office 2007。
错误是:错误1004 - 选择范围类的方法失败。
代码:
Private Sub SelectFrontPage(wbk as Object)
wbk.Activate ' maybe this line is not necessary
wbk.Sheets("Intro").Activate ' Activate or Select?
wbk.Sheets("Intro").Range("A1").Select ' here the debugger stops :(
End Sub
更新:
我如何打开Excel?
Dim xls As Object
Set xls = CreateObject("Excel.Application")
xls.EnableEvents = False
xls.DisplayAlerts = False
dim wbk as Object
set wbk = xls.Workbooks.Open("mytemplate.xlsm")
' ... some data export here
SelectFrontPage wbk
wbk.Save
wbk.Close
另一个更新: 我使用了几个模板,其中一个有英文工作表名称,另一个有本地语言的工作表名称。英语版按预期工作。必须有其他东西才能导致问题......但是问题显然不在于工作表名称,因为激活工作表的行传递正常。
当我添加行
xls.Visible = True
打开Excel应用程序后,一切都按预期工作。天哪,这是什么样的巫术?
答案 0 :(得分:0)
这看起来你需要声明Excel,你将wbk作为对象传递,我尝试传递为工作簿。
> Sub whatever(wb as Excel.Workbook)
> Dim ws As Worksheet
>
> Set ws = wb.Sheets("Intro")
> ws.Activate
> ws.Cells(1, 1).Select
> End Sub
编辑: 步骤1: 你可以去有问题的工作簿,选择介绍表选择单元格A1命名范围到IntroHome。
命名范围push ctl + f3;名称管理员将出现;点击新;输入名称。
第2步 试试这段代码
Dim ws As Excel.Worksheet: Set ws = wb.Sheets("Intro")
Dim rng As Range
Set rng = [IntroHome]
ws.Activate
rng.Select
答案 1 :(得分:0)
使用Select
方法是错误的方法。在这个和其他编程论坛上已多次提到它。
如果您想将A1
单元格作为窗口的左上角,我建议使用Application.GoTo method:
xls.Goto Reference:=wbk.Worksheets(1).Range("A1"), _
scroll:=True
注意:我使用Worksheets(1)
代替Sheets(1)
,因为Sheets
集合也可以引用Charts
。请阅读文档。
我测试了MS Word上面的代码行:
Sub DoWhatever()
Dim xls As Object, wbk As Object
Set xls = CreateObject("Excel.Application")
Set wbk = xls.Workbooks.Add()
xls.GoTo Reference:=wbk.Worksheets(1).Range("A1"), Scroll:=True
wbk.SaveAs "D:\aaa.xlsx"
wbk.Close SaveChanges:=False
xls.Quit
Set wbk = Nothing
Set xls = Nothing
End Sub
代码已执行且没有错误。
顺便说一句:不知道为什么将A1
单元格作为MS Excel窗口的左上角仍然如此重要。 ;)
答案 2 :(得分:0)
这是Office 2013更改/错误。你不能。选择或.Activate除非可见。我担心我还没有建议的解决办法,因为我在升级到Office 2013之后才遇到这个问题。
Select
是否合适取决于预期的用例。通常情况并非如此。在这种情况下,VK的用户可能希望特定单元在打开工作簿时处于活动状态,这可能是因为他们可以立即开始输入数据等.Excel在保存工作簿时保存当前活动的单元格显然,当你打开那本工作簿时它会持续存在。