VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: SengChuary

[求助] VB 文本框+保存按钮读写excel操作,有酬谢

[复制链接]
 楼主| 发表于 2018-11-10 22:57:39 | 显示全部楼层
mapletreekc 发表于 2018-11-10 22:21
好了,你试一下吧。
自己再弄一下布局吧。
有问题可在论坛上联系。

谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-10 23:20:18 | 显示全部楼层
本帖最后由 SengChuary 于 2018-11-10 23:22 编辑
mapletreekc 发表于 2018-11-10 22:21
好了,你试一下吧。
自己再弄一下布局吧。
有问题可在论坛上联系。


你发的这个我也改过老是出错,第一次这样输没错,ID不变没问题


第二掉换位置text2与Text3内容相同ID不变,储存没问题


第三部text2与Text3内容完全不同ID不变,储存出错


兄弟帮忙有空看看,辛苦!
回复 支持 反对

使用道具 举报

发表于 2018-11-11 08:21:31 | 显示全部楼层
SengChuary 发表于 2018-11-10 23:20
你发的这个我也改过老是出错,第一次这样输没错,ID不变没问题

你把r = ActiveSheet.UsedRange.Rows.Count改为r = xlbook.Worksheets(1).UsedRange.Rows.Count
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-11 10:38:04 | 显示全部楼层
mapletreekc 发表于 2018-11-11 08:21
你把r = ActiveSheet.UsedRange.Rows.Count改为r = xlbook.Worksheets(1).UsedRange.Rows.Count



兄弟好像试了一下你的方法好像不行
回复 支持 反对

使用道具 举报

发表于 2018-11-11 11:17:07 | 显示全部楼层
本帖最后由 mapletreekc 于 2018-11-11 11:18 编辑
SengChuary 发表于 2018-11-11 10:38
兄弟好像试了一下你的方法好像不行


哥们,你看清楚我上一个回复,是换成   r = xlbook.Worksheets(1).UsedRange.Rows.Count,不要漏 了 r=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-11 12:03:37 | 显示全部楼层
mapletreekc 发表于 2018-11-11 11:17
哥们,你看清楚我上一个回复,是换成   r = xlbook.Worksheets(1).UsedRange.Rows.Count,不要漏 了 r=

谢谢兄弟,我这儿马虎了,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-11 13:36:33 | 显示全部楼层
本帖最后由 SengChuary 于 2018-11-11 13:42 编辑
SengChuary 发表于 2018-11-11 10:38
兄弟好像试了一下你的方法好像不行


兄弟还得麻烦你一下,我想让格式按照这种格式储存既=日期_时间_操作员(文本框内字符任意)_ID.xlsx,ID是唯一,如果读ID是一样的,就把界面其它文本框的数据保存这个表,格式样式如下

Format(Year(Date$), "00") & Format(Month(Date$), "00") & Format(Day(Date$), "00") & "_" & Format(Hour(Time$), "00") & Format(Minute(Time$), "00") & Format(Second(Time$), "00") & "_" & txtOp.Text & "_" & txtSampleId.Text & ".xlsx"

例如文档名是20181111_131312_xiaoming_ID123456.xlsx  ,其中txtOp.Text 文本是对应操作员xiaoming输入的内容,txtSampleId.Text 是输入的ID123456,且是唯一的文档,下次再输ID123456时检测打开这个文档继续把窗体内其它文本框内的数据再保存这个文档,就是储存不会搞了,麻烦兄弟帮看看应该怎样定。


Private Sub btnSave_Click()

Set xlapp = CreateObject("excel.application") '第一层
Set xlbook = xlapp.Workbooks.Add
xlapp.Visible = False

Nrec = 1
If Dir("D:\Data\" = Format(Year(Date$), "00") & Format(Month(Date$), "00") & Format(Day(Date$), "00") & "_" & Format(Hour(Time$), "00") & Format(Minute(Time$), "00") & Format(Second(Time$), "00") & "_" & txtOp.Text & "_" & txtSampleId.Text & ".xlsx") = "" Then   '判断此路径下是否已存在文件,如需要存放到其它路径,请更改此处D:\
xlbook.Sheets(1).Range("a1") = "No."
xlbook.Sheets(1).Range("b1") = "Date"
xlbook.Sheets(1).Range("c1") = "Time"
xlbook.Sheets(1).Range("d1") = "Operator"
xlbook.Sheets(1).Range("e1") = "Sample ID"
xlbook.Sheets(1).Range("f1") = "Other Info"
xlbook.Sheets(1).Range("g1") = "Data1-Wrap"
xlbook.Sheets(1).Range("h1") = "Data2-Thick"

xlbook.Sheets(1).Range("a2") = Nrec
xlbook.Sheets(1).Range("b2") = txtDate.Text
xlbook.Sheets(1).Range("c2") = txtTime.Text
xlbook.Sheets(1).Range("d2") = UCase(txtOp.Text)
xlbook.Sheets(1).Range("e2") = UCase(txtSampleId.Text)
xlbook.Sheets(1).Range("f2") = UCase(txtOtherInfo.Text)
xlbook.Sheets(1).Range("g2") = txtDataWrap.Text
xlbook.Sheets(1).Range("h2") = txtDataThick.Text

xlbook.SaveAs "D:\Data\" = Format(Year(Date$), "00") & Format(Month(Date$), "00") & Format(Day(Date$), "00") & "_" & Format(Hour(Time$), "00") & Format(Minute(Time$), "00") & Format(Second(Time$), "00") & "_" & txtOp.Text & "_" & txtSampleId.Text & ".xlsx"  '如需要存放到其它路径,请更改此处D:\
MsgBox ("创建文件成功,文件保存在D盘根目录下")
Else
Set xlbook = xlapp.Workbooks.Open("D:\Data\" = Format(Year(Date$), "00") & Format(Month(Date$), "00") & Format(Day(Date$), "00") & "_" & Format(Hour(Time$), "00") & Format(Minute(Time$), "00") & Format(Second(Time$), "00") & "_" & txtOp.Text & "_" & txtSampleId.Text & ".xlsx") '打开EXCEL工作簿
    Set xlsheet = xlbook.Worksheets(1) '打开EXCEL工作表
    xlsheet.Activate '激活工作表
r = xlbook.Worksheets(1).UsedRange.Rows.Count
r1 = "a" & r + 1
r2 = "b" & r + 1
r3 = "c" & r + 1
r4 = "d" & r + 1
r5 = "e" & r + 1
r6 = "f" & r + 1
r7 = "g" & r + 1
r8 = "h" & r + 1

xlbook.Sheets(1).Range(r1) = r
xlbook.Sheets(1).Range(r2) = txtDate.Text
xlbook.Sheets(1).Range(r3) = txtTime.Text
xlbook.Sheets(1).Range(r4) = UCase(txtOp.Text)
xlbook.Sheets(1).Range(r5) = UCase(txtSampleId.Text)
xlbook.Sheets(1).Range(r6) = UCase(txtOtherInfo.Text)
xlbook.Sheets(1).Range(r7) = txtDataWrap.Text
xlbook.Sheets(1).Range(r8) = txtDataThick.Text


MsgBox ("已存在该ID的文件,内容已保存")
End If
xlbook.Close (True) '关闭EXCEL工作簿
    xlapp.Quit '关闭EXCEL
     Set xlsheet = Nothing
     Set xlbook = Nothing
     Set xlapp = Nothing '释放EXCEL对
End Sub


回复 支持 反对

使用道具 举报

发表于 2018-11-11 16:21:52 | 显示全部楼层
SengChuary 发表于 2018-11-11 13:36
兄弟还得麻烦你一下,我想让格式按照这种格式储存既=日期_时间_操作员(文本框内字符任意)_ID.xlsx,ID是 ...

这样吧,你把你最终的表格上传一个(包括命名格式和内容格式)
还有你的EXCEL文件名是不是以你点击保存按钮的日期时间来变更(不同ID就新建个)
有空帮你弄下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-11 17:57:11 | 显示全部楼层
本帖最后由 SengChuary 于 2018-11-11 18:20 编辑
mapletreekc 发表于 2018-11-11 16:21
这样吧,你把你最终的表格上传一个(包括命名格式和内容格式)
还有你的EXCEL文件名是不是以你点击保存按 ...


文档你看下,文档储存格式以年月日_时分秒_Operator_Sample ID.xlsx,主要以Sample ID的内容为主判断,Operator内容以第一次的为建表时为主,后面有变动要把这个Operator之前的表名字段的Operator内容换掉保存新的Operator内容,同时Sample ID的输入内容不变还是那张表,其它内容数据照样按之前保存数据序号累计增加,文档时间以以点击保存按钮的日期时间来变更即可。

VB_Project.rar (22.42 KB, 下载次数: 53)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-12 09:41:59 | 显示全部楼层
SengChuary 发表于 2018-11-11 17:57
文档你看下,文档储存格式以年月日_时分秒_Operator_Sample ID.xlsx,主要以Sample ID的内容为主判断,O ...

如果文档储存格式以年月日_时分秒_Operator_Sample ID.xlsx比较麻烦的话,可以不用理这个替换这个Operator之前的表名字段的Operator内容换掉保存新的Operator内容,格式以这个年月日_时分秒_Sample ID.xlsx保存即可,判断那个Sample ID的内容是这个表就可以了,然后把其它的数据保存到这个文档就可以了保存时间以最后保存时间即可
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-11-15 05:52

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表