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 = 12xlsheet.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 = 10If Dir(App.Path & "\Excel", vbDirectory) = "" Then MkDir App.Path & "\Excel"
xlBook.SaveAs App.Path & "\Excel\Excel.xls"xlBook.ChangeFileAccess Mode:=Excel.XlFileAccess.xlReadOnlyxlBook.Close
Set xlsheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
MsgBox "SUCCESS", , MsgTitle
err_handle:
End Sub
但是excel仍然是可写的,不是只读的,网上搜了半天也找不到办法,不知道有没有高人指点下

解决方案 »

  1.   

    帮助文件中对于ChangeFileAccess方法有这样一句说明,不知道看了没有。如果以只读模式打开文件,则不可独占访问此文件。如果将此文件从只读更改为可读写,Microsoft Excel 必须载入该文件的新副本以确认在以只读模式打开该文件后没有进行过更改。
      

  2.   

    用保护工作表的方法吧~~~
    xBook.ActiveSheet.Protect Password:="123456", DrawingObjects:=True, Contents:=True, Scenarios:=True