首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Excel 2010中用用户表单存储和检索数据

在Excel 2010中用用户表单存储和检索数据
EN

Code Review用户
提问于 2017-11-22 15:54:56
回答 1查看 273关注 0票数 3

我目前正在使用Excel为我的办公室设计一个检查列表,它要求用户将需要保存在与此检查列表相同的文件夹中的4-10个文档保存在任何地方。我认为,使用用户表单将所有内容合并到一个Excel文件中可能更容易。我注意到使用用户表单存储数据是不安全的,而是使用它来显示或操作电子表格中的数据或单元格。

不幸的是,我无法将这些文件中的所有原始数据存储到一个单元格中,因为它们可能是相当大的文件。我想也许最好用一个ActiveX Textbox来存储这些数据,但我想知道这是否会在以后引起问题,或者其他人的电脑不兼容。

我所做的一切.

这是将数据存储在ActiveX文本框中的辅助电子表格(将被隐藏)。

下面显示该数据的用户表单,存储在ActiveX文本框中的辅助电子表格中。

TL;

博士

一切正常,但我的主要问题是.这是最好也是最安全的(最安全的,丢失数据的可能性最低).我不担心安全性,因为所有的东西都存储在服务器上)使用嵌入式TextBoxes将所有这些数据存储在一个文档中?如果没有,那么什么是好的选择呢?

关闭用户窗体时运行的代码。

代码语言:javascript
复制
Private Sub btnSaveAndClose_Click()

    Sheets("Data").TextBox1.Value = PO850Data.Value
    Sheets("Data").TextBox2.Value = Invoice810Data.Value
    frmEDIData.Hide

End Sub

打开用户窗体时运行的代码。

代码语言:javascript
复制
Private Sub UserForm_Initialize()

    btnSaveAndClose.SetFocus
    PO850Data.Value = Sheets("Data").TextBox1.Value
    Invoice810Data.Value = Sheets("Data").TextBox2.Value

End Sub

编辑1:

示例EDI 850文档- (X12格式)

代码语言:javascript
复制
ISA*01*0000000000*01*0000000000*ZZ*ABCDEFGHIJKLMNO*ZZ*123456789012345*101127*1719*U*00400*000003438*0*P*>
GS*PO*4405197800*999999999*20101127*1719*1421*X*004010VICS
ST*850*000000010
BEG*00*SA*08292233294**20101127*610385385
REF*DP*038
REF*PS*R
ITD*14*3*2**45**46
DTM*002*20101214
PKG*F*68***PALLETIZE SHIPMENT
PKG*F*66***REGULAR
TD5*A*92*P3**SEE XYZ RETAIL ROUTING GUIDE
N1*ST*XYZ RETAIL*9*0003947268292
N3*31875 SOLON RD
N4*SOLON*OH*44139
PO1*1*120*EA*9.25*TE*CB*065322-117*PR*RO*VN*AB3542
PID*F****SMALL WIDGET
PO4*4*4*EA*PLT94**3*LR*15*CT
PO1*2*220*EA*13.79*TE*CB*066850-116*PR*RO*VN*RD5322
PID*F****MEDIUM WIDGET
PO4*2*2*EA
PO1*3*126*EA*10.99*TE*CB*060733-110*PR*RO*VN*XY5266
PID*F****LARGE WIDGET
PO4*6*1*EA*PLT94**3*LR*12*CT
PO1*4*76*EA*4.35*TE*CB*065308-116*PR*RO*VN*VX2332
PID*F****NANO WIDGET
PO4*4*4*EA*PLT94**6*LR*19*CT
PO1*5*72*EA*7.5*TE*CB*065374-118*PR*RO*VN*RV0524
PID*F****BLUE WIDGET
PO4*4*4*EA
PO1*6*696*EA*9.55*TE*CB*067504-118*PR*RO*VN*DX1875
PID*F****ORANGE WIDGET
PO4*6*6*EA*PLT94**3*LR*10*CT
CTT*6
AMT*1*13045.94
SE*33*000000010
GE*1*1421
IEA*1*000003438

这些文档可能要大得多,我要说,我们定期处理这个大小的10倍。每个TextBox将存储这些文档的数据之一。

EN

回答 1

Code Review用户

回答已采纳

发布于 2017-12-07 20:52:12

参见以下相关问题:https://stackoverflow.com/questions/7589579/is-it-possible-to-store-elements-of-array-permanently-in-vba-in-excel

摘要:要使用VBA将数据持久化地存储在工作簿中,您可以使用以下几个选项:

  • 将其存储在另一个工作表中。如果您不希望用户能够看到工作表,Sheets("ArrayValuesWorksheet").Visible = xlVeryHidden
  • 创建一个具有所需数据作为其值的定义名称。Names("MyArrayData") = myArray
  • 将其存储在ThisWorkbook.CustomDocumentProperties中--参见https://stackoverflow.com/questions/17406585/vba-set-custom-document-property
  • 将其存储在CommandBar中,希望用户找不到它
  • 使用帮助器XLL,它可以调用Excel4(xlDefineBinaryName,...)Excel4(xlGetBinaryName)

我相信储存在一个隐藏的床单是最常见的。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/181091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档