vb如何保存修改过的excel

不要另存为
要保存在原文档里的
xlapp.activeworbook.save
这条语句保存不了
提示为文件是只读(被之前的操作锁死了)

提示,如果你本身就是以只读模式打开,那不可能保存为原文件的

你可以读取值 xlapp.activeworbook.readonly 如果这个值true 很遗憾,你本身是以只读模式打开的,如果这个值是false 恭喜,你可以保存原文件了追问

怎么读值
如何修改?

追答

dim a as boolean  ‘布尔类型  TRUE/FALSE

a = xlapp.activeworbook.readonly 

msgbox(a)  


这个不能改,在你打开的时候就确定了,

只读情况我列几个

    文件已经有人打开,你在打开只能只读

    文件有加密,你没输入密码打开,只读

    你打开的vba代码是用只读方式打开

    该文件是远程电脑共享的,你可能只有只读权限

    该文件是本电脑另一个用户创建的,而你现在的用户权限不够

    该文件属性是只读属性



大概就先列这几个

追问

是true
用什么语句打开才是可以修改的?

追答

你先确定你手动双击打开的时候,不是只读模式,
如果是只读模式,请参照我以上的几种情况确认一下,并处理到,你手动双击打开的时候不是只读模式,如果都不是,我们再考虑代码问题

Set MBook = MApp.Workbooks.Open(ThisWorkbook.Path & "\test1.xls", ReadOnly:=False)
以上是默认以 非只读方式打开
但是如果有我上面讲的几种情况,你保存的时候,还是保存不了的

追问

文档打开时,提示:文档已被其他程序锁定,是否以只读模式打开
代码用了
readonly的值还是true
谢谢你
如果问题能解决
我会再追加悬赏的

追答

有扣扣吗留个联系阿

听你的语气,该文件是你本地自己创建的文件,

    那么是不是有专业的软件在使用,

    也有可能你自己打开了没关闭

    也不排除病毒可能

如果第一种,你需要关闭该软件,

如果第二种,你在进程管理器里面把所有的excel.exe删除,或者注销一下系统就可以了


ps: vba 代码 打开表格的时候,需要关闭表格.close,也要把所有的字段 app,book,sheet 设置成nothing

比如 set Mapp= nothing

追问

扣扣
446091929

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-01
点击“保存”,不要点击“另存为”追问

是用vb操作的
不是直接用excel

第2个回答  2014-11-01
Option Explicit

Dim iCount As Long
Dim arrStr() As String

Private Sub Form_Load()
ReDim arrStr(0 To 255, 0 To 20) As String
iCount = 0
End Sub

Private Sub Command1_Click()
If iCount > 255 Then
MsgBox "超过行数限制"
Exit Sub
End If
Dim i As Long
For i = 0 To 20
arrStr(iCount, i) = Text1(i).Text
Next i
iCount = iCount + 1
For i = 0 To 20
Text1(i).Text = ""
Next i
End Sub

Private Sub Command3_Click() '保存(不合格)
If iCount > 255 Then Exit Sub
Dim Ex As Object
Dim ExBook As Object
Dim ExSheet As Object

Set Ex = CreateObject("Excel.Application")
Set ExBook = Ex.Workbooks.Add
Set ExSheet = ExBook.Worksheets("Sheet1") '打开
ExSheet.Activate '激活工作表
Ex.Visible = True

ExSheet.Range("A1:U1").Value = Array("产品型号", "测试日期", "测试时间", "峰峰值", "均方根值", "频率", "周期", "上升时间", "下降时间", "正脉宽", "负脉宽", "正占空比", "负占空比", "最大值", "最小值", "平均值", "幅度", "顶端值", "底端值", "过冲", "预冲")

Dim i As Long
Dim j As Long

For i = 0 To iCount - 1
For j = 1 To 21
ExSheet.Cells(i + 2, j) = arrStr(i, j - 1)
Next j
Next i

On Error Resume Next
Ex.ActiveWorkbook.SaveAs ("H:\测试数据保存(不合格).xls")

Set ExSheet = Nothing
Set ExBook = Nothing
Ex.Quit
Set Ex = Nothing

End Sub

其中iCount的限制你可以自行修改追问

什么程序
我只要保存的语句

相似回答