捉急求助:vba打开spreadsheet

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捉急求助:vba打开spreadsheet相关的知识,希望对你有一定的参考价值。

现在想将指定excel中的sheet1复制给窗口中的spreadsheet1,但不是窗口所在表格,是另外的excel中(知道文件路径和文件名)的sheet1,财富值少,已是全部,好人莫嫌,含泪求助
请问:该怎样锁定spreadsheet中的单元格啊?谢谢!

参考技术A '这是后台打开EXCEL的思路,下面是代码,你参考下:
     Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
    
    Dim FSs, FLs
    Set FSs = CreateObject("Scripting.FileSystemObject")
    
    FLs = "d:\\驾驶员相关到期提醒.xls"
    If FSs.FileExists(FLs) = False Then    '验证文件是否存在
        exit sub
    Else
        Set xlBook = xlApp.Workbooks.Open("d:\\驾驶员相关到期提醒.xls")
    End If
    
    xlApp.Visible = False '设置EXCEL对象可见(或不可见)
    Set xlSheet = xlBook.Worksheets("sheet1") '设置活动工作表

    xlSheet.Cells.Copy
    
    Spreadsheet1.Cells.Select    
    ActiveSheet.Paste    
    
    xlbook.close
    Set xlApp = Nothing '释放xlApp对象

追问

谢谢!问题已经解决,先后台打开excel复制到当前文档中,然后再关闭excel,将当前文档中的表格复制到spreadsheet,但还有个问题想请教:怎样锁定spreadsheet中的单元格啊?谢谢

追答

最简单的就是在SelectionChanging事件中判断当前单元格的行列值,强制制定当前单元格:

With Spreadsheet1
        x = .ActiveCell.Row
        Y = .ActiveCell.Column
        If x < 3 Then x = 3 '锁定标题行
        If Y < 2 Then Y = 2 '锁定数据列
        If x > s2 - 1 Then x = s2 - 1 '锁定最大行
        If Y > s1 - 1 Then Y = s1 - 1 '锁定最大列 
end with

也可以用if条件对个别单元格强制不得选中。

参考技术B 锁定12列代码:
With Me.Spreadsheet1
.Cells.Locked = False
.Columns(12).Locked = True
.Sheets(1).Protect
End With本回答被提问者采纳

以上是关于捉急求助:vba打开spreadsheet的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA 求助

vba代码求助,将修改区域复制到数组中?

求助,EXCEL通过VBA操作SQL数据库

EXCEL编程VBA,新手小白紧急求助!求代码,在线等

[求助] excel VBA多条件求和代码优化

VBA代码求助,遍历相同的字母组合?