| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:VB写Excel的一个问题
只看楼主 加入收藏
marcodeba
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-13
结帖率:0
收藏
已结贴  问题点数:0 回复次数:5 
VB写Excel的一个问题
毕业好多年了最近接手一个VB的东西,功能是用VB把数据做成Excel报表,但是Excel要是只读的,我网上找了段测试代码如下
Private Sub Command1_Click()
On Error GoTo err_handle
  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlsheet As Excel.Worksheet
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  xlApp.Visible = False
  Set xlsheet = xlBook.Worksheets("Sheet1")
  xlApp.ScreenUpdating = False
  With xlsheet
  .Range("A1").Value = "A"
  .Range("B1").Value = "B"
  .Range("C1").Value = "C"
  .Range("D1").Value = "D"
  .Range("E1").Value = "E"
  .Range("F1").Value = "F"
  .Range("G1").Value = "G"
  .Range("H1").Value = "H"
  .Range("I1").Value = "I"
  End With
  'xlsheet.Range("A2").CopyFromRecordset Adodc2.Recordset
  xlsheet.Cells.HorizontalAlignment = xlCenter
  xlsheet.Cells.Font.Size = 12

xlsheet.Columns(1).ColumnWidth = 10
xlsheet.Columns(2).ColumnWidth = 10
xlsheet.Columns(3).ColumnWidth = 10
xlsheet.Columns(4).ColumnWidth = 16
xlsheet.Columns(5).ColumnWidth = 10
xlsheet.Columns(6).ColumnWidth = 16
xlsheet.Columns(7).ColumnWidth = 16
xlsheet.Columns(8).ColumnWidth = 10
xlsheet.Columns(9).ColumnWidth = 10

If Dir(App.Path & "\Excel", vbDirectory) = "" Then MkDir App.Path & "\Excel"
xlBook.SaveAs App.Path & "\Excel\Excel.xls"

xlBook.ChangeFileAccess Mode:=Excel.XlFileAccess.xlReadOnly

xlBook.Close
Set xlsheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
MsgBox "SUCCESS", , MsgTitle
err_handle:
End Sub
但是excel仍然是可写的,不是只读的,网上搜了半天也找不到办法,不知道有没有高人指点下
搜索更多相关主题的帖子: Excel 
2011-06-13 11:42
haigecnpeng
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:261
专家分:510
注 册:2008-10-6
收藏
得分:10 
xlBook.ChangeFileAccess Mode:=Excel.XlFileAccess.xlReadOnly
这句代码是将excel改为只读属性的,

只读属性的文件打开后是可以修改的,只是不能保存修改而已,可以另存的,

你希望的应该是表格保护之类的命令吧,不好意思我不会,不过可以试下用宏录制的代码改一下。
录制宏,保护工作表,得到以下代码,可以参考下
    Range("A1:J63").Select
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True

都说到了.net年代,VB与C#都是一样的!
但为什么招聘的都是C#呢?
2011-06-18 21:30
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:10 
楼主要弄清楚这是.net版块,而非VB6

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-06-21 11:40
haigecnpeng
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:261
专家分:510
注 册:2008-10-6
收藏
得分:0 
呵呵,都差不多的,我家里没.NET,没办法试,

我经常不知道office对象时,都用宏来参考的,宏用的是VBA,对于平台的话关系不大的。

我现在VB6跟VB。net都在用,容易混淆,不好意思啦。

都说到了.net年代,VB与C#都是一样的!
但为什么招聘的都是C#呢?
2011-06-21 20:43
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
haigecnpeng ,你和楼主marcodeba是两个ID对应一个人?我说的是楼主啊。呵呵

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-06-21 21:16
haigecnpeng
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:261
专家分:510
注 册:2008-10-6
收藏
得分:0 
呵呵,不好意思,以为说楼上的啦,加上本来就心虚!

都说到了.net年代,VB与C#都是一样的!
但为什么招聘的都是C#呢?
2011-06-22 19:59
快速回复:VB写Excel的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017004 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved