精华内容
下载资源
问答
  • 本章主要描述Excle VBA中如何将控件excel中的数据关联。 一、如何关联已有的Excel文档和VBA 其实这个就是如何使用Vba打开已有的Excel文件。这其实是我们关联excelExcel最早要干的事,如果不打开文件,你还做...

    引言:

    之前已经描述分别描述了Excel VBA的窗体、控件和Excel本身的对象(也就是数据的承载者)。本章主要描述Excle VBA中如何将控件和excel中的数据相关联。

    一、如何关联已有的Excel文档和VBA

    其实这个就是如何使用Vba打开已有的Excel文件。这其实是我们关联excel和Excel最早要干的事,如果不打开文件,你还做毛线的操作。

    使用workbooks.open方法:

    表达式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

    括号里的都是参数

    Sub open_test()
        Workbooks.Open "D:\pbxtest.xlsx"
        Workbooks(2).Activate
    End Sub
    

    上面示例是表示打开文件pbxtest.xlsx,并激活。为什么使用 Workbooks(2).Activate呢,因为你打开excel本身就会有一个workbook,用workbooks(1)表示。(可以参考前面章节)

    注意:open方法带的路径是一个绝对路径。

    二、如何关联控件和Excel数据

    目前我找到两个方法:

    • 1.使用控件的controlsource,rowsource属性,能使用controlsource属性的控件如下图。

     rowsource 指定为组合框或列表框提供列表的来源

    示例1:

    下例在列表框中使用工作表单元格(A1:E4)的区域,文本框使用工作表单元格(A1)。这个代码示例使用了 RowSourceBoundColumnControlSource 属性。

    若要使用该示例,请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 LIstBox1 的列表框,命名为TextBox1的文本框。在工作表单元格的 A1:E4 中输入数据。

    Private Sub UserForm_Initialize()
    Workbooks(2).Activate
    TextBox1.ControlSource = "a1"
    
    ListBox1.ColumnCount = 5
    ListBox1.RowSource = "a1:e4"
    
    End Sub

    运行结果如下:

    红色框表示Textbox内的数据已经和excel的A1内容关联上了,蓝色框标识listbox的数据与Excel的A1:E4的数据关联上了,此时修改A1的内容,窗口内控件的值也会跟着动

    如下图:

    • 2.使用Change方法 

     上个例子比较死板,Textbox只能对应显示某一个Excel的单元格,且只能做如下动作:修改单元格然后触发TextBox的内容变化。我想更近一步的操作,比如我想鼠标选定哪个单元格,哪个单元格的内容就显示到TextBox(文本框),并且当修改文本框的内容时,Excel当前选定的单元格内容也会随之改变,该怎么弄?分三步:

    首先,写一个选定单元格的方法,并在窗体初始化时调用:

    目的:初始化时文本框就能显示已经选定单元格的内容。

    '选定Excel单元格
    Public Sub select_test()
        Dim rng As Range
        Set rng = ActiveCell.Cells
        UserForm1.TextBox1.Value = rng.Value
    End Sub
    '初始化窗口
    Private Sub UserForm_Initialize()
        Workbooks(1).Activate
        Call select_test
    End Sub
    • 注意:select_test()方法要定义成public方便不同的模块调用。 

    第二,改变文本框内容时,选定的单元格内容同步修改

    使用TextBoxChange方法。

    Private Sub TextBox1_Change()
        Set rng = ActiveCell.Cells
        rng.Value = UserForm1.TextBox1.Value
    End Sub

    第三,文本框显示选定单元格的内容

    使用worksheetSelectionChange方法。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Call select_test
    End Sub

    选定单元格显示到文本框 

    修改文本框内容,EXCEL选定的单元格内容同步修改 

     

    不会弄gif图,凑合着看吧。 

    展开全文
  • VC关联excel方法

    2014-04-12 16:54:34
    摘要:使用Microsoft Office所带的控件来实现代码操作excel表格。  最近由于工作需要,不得不操作Excel,包括基本的数据输入输出、字体设置、颜色设置、单元格的合并、填充色的设置,当然还包括图表的生成以及...

    摘要:使用Microsoft Office所带的控件来实现代码操作excel表格。

      最近由于工作需要,不得不操作Excel,包括基本的数据输入输出、字体设置、颜色设置、单元格的合并、填充色的设置,当然还包括图表的生成以及渐近线的操作等。折腾了许久,项目终于完成了^_^。现在将学习操作Excel的点点滴滴记录下来和大家一同分享,也作为自己的一次总结。

          1、Excel的对象模型(有人称其为层次结构)

          打开一个Excel工作表,点击“工具”->“宏”->“Visual Basic 编辑器”选项打开VB的编辑器,打开帮助文档,里面“Microsoft Excel Visual Basic 参考”下的“Microsoft Excel 对象模型”展示了完整的Excel的层次结构,是不是有点类似于MFC的继承图表啊?利用帮助文档我们可以找到一些需要的知识,下面介绍一些类:

          _Application:表示整个的Excel应用程序,包含一个工作簿集合

          Workbooks:工作簿集合,包含N个工作簿(Workbook)

          _Workbook:工作簿,包含一个工作表(sheets)集合

          Worksheets:工作表集合,包含N个工作表

          _Worksheet:工作表,也就是我们在Excel中看到的Sheet1、Sheet2、Sheet3,它是我们操作Excel的基本单位

          Range:这是单元格的集合,我们知道Excel是由一个个的单元格组成的,通过Range来操作单元格

          Font:用于设置单元格的字体、颜色、字号、粗体设置

          Interior:设置底色

          Boards:设置区域内所有单元格的边框,如果要设置一组区域的外边框的话用Rang->BorderAround设置

          下面用一个具体的例子来说明怎么通过MFC来操作Excel

          2、Excel库的插入

          在我们MFC的工程中,按Ctrl+W打开MFC类向导对话框,点击“Add Class...”->“From a type Library...”,找到你所使用的excel类型库,我使用的在目录C:/Program Files/Microsoft Office/OFFICE11下的“EXCEL.EXE”文件,查找时文件类型选“All Files”,然后添加我们所需要的类,通常以上列举的前6类是必须的,其它的需要时再添加。我不认为全部添加是一种好的做法,一个我觉得很乱,另外生成的excel.cpp文件会很大。我建议浏览一遍这些类,这样当你做些操作时可以更清楚的知道需要添加哪些类。添加完需要的类后,我们就可以来做一些基本的操作了。

          3、Com支持库的初始化

          通常在App的InitInstance()里面加入初始化和关闭COM库的操作,在DoModal()调用之前加入初始化的代码:

    if (CoInitialize(NULL) != 0)   
    {   
        AfxMessageBox("初始化COM支持库失败!");   
        exit(1);   
    }   

       在return之前加入CoUninitialize(); 关闭CON库。

          4、代码演示一些基本的操作

          首先别忘了包含头文件“excel.h”,若用到_variant_t()时,需要包含头文件“comdef.h”和“comutil.h”,否则会出现错误:

    error C2065: '_variant_t' : undeclared identifier”。

          下面的代码包括了一些基本的操作:

     // 变量的定义  
        _Application app;  
        Workbooks books;  
        _Workbook book;  
        Worksheets sheets;  
        _Worksheet sheet;  
        Range range;  
        LPDISPATCH lpDisp;      
        COleVariant vResult;  
      
        CString str = "";  
          
        COleVariant  
            covTrue((short)TRUE),  
            covFalse((short)FALSE),  
            covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
          
        //创建Excel 2003服务器(启动Excel)  
        if (!app.CreateDispatch("Excel.Application",NULL))   
        {   
            AfxMessageBox("Create Excel service failure!");  
            return;  
        }  
      
        // 设置为FALSE时,后面的app.Quit();注释要打开  
        // 否则EXCEL.EXE进程会一直存在,并且每操作一次就会多开一个进程  
        app.SetVisible(TRUE);  
        books.AttachDispatch(app.GetWorkbooks(),true);  
          
        /* 
        *   打开一个工作簿。 
        *   Excel 2000 只需要13个参数就行,Excel 2003需要15个参数 
        */  
        lpDisp = books.Open("E://test.xls",  
            covOptional, covOptional, covOptional, covOptional,  
            covOptional, covOptional, covOptional, covOptional,  
            covOptional, covOptional, covOptional, covOptional,  
            covOptional, covOptional);  
        ASSERT(lpDisp);  
          
        book.AttachDispatch(lpDisp);  
          
        // 得到Worksheets    
        sheets.AttachDispatch(book.GetWorksheets(),true);   
          
        // 得到Worksheet  
        sheet.AttachDispatch(sheets.GetItem(_variant_t((short)(1))));     
          
        // 得到全部Cells   
        range.AttachDispatch(sheet.GetCells(),true);  
      
          
        // 往单元格A1里写入字符串数据,就像操作矩阵一样,第1行第1列  
        range.SetItem(_variant_t((LONG)1),_variant_t((LONG)1),_variant_t("hello word!"));  
      
        // 往单元格A2里写入时间数据  
        range.AttachDispatch(sheet.GetRange(_variant_t("A2"), _variant_t("A2")),true);  
        range.SetValue2(_variant_t("2011/02/15"));  
      
        // 往单元格A3~A6里写入浮点数据  
        range.AttachDispatch(sheet.GetRange(_variant_t("A3"), _variant_t("A6")),true);  
        range.SetValue2(_variant_t((double)3.14));  
      
        // 设置单元格的列宽为12  
        range.AttachDispatch(sheet.GetRange(_variant_t("A1"), _variant_t("A1")),true);  
        range.SetColumnWidth(_variant_t((long)12));  
      
        // 所有单元格居中显示  
        range.AttachDispatch(sheet.GetCells(),true);  
        range.SetHorizontalAlignment(_variant_t((long)-4108)); // -4108:居中,-4131:靠左,-4152:靠右  
        range.SetVerticalAlignment(_variant_t((long)-4108)); // -4108:居中,-4160:靠上,-4107:靠下  
      
        // 读取单元格的数据,第4行第1列  
        range.AttachDispatch(range.GetItem(_variant_t((long)(4)),_variant_t((long)(1))).pdispVal );  
        vResult =range.GetValue(covOptional);  
          
        switch (vResult.vt)  
        {  
        case VT_BSTR:       // 字符串  
            str=vResult.bstrVal;  
            break;  
        case VT_R8:         // 8字节的数字  
            str.Format("%f",vResult.dblVal);  
            break;  
        case VT_DATE:       // 时间格式  
            SYSTEMTIME st;  
            VariantTimeToSystemTime(vResult.date, &st);  
            break;  
        case VT_EMPTY:      // 单元格空的  
            str="";  
            break;  
        }  
        //MessageBox(str);  
      
        Font ft;    // 要插入excel类库里面的Font类,下面类似  
          
        range.AttachDispatch(sheet.GetRange(_variant_t("A3"), _variant_t("A5")),true);  
        ft.AttachDispatch(range.GetFont());  
        ft.SetName(_variant_t("华文行楷")); // 字体   
        ft.SetSize(_variant_t((long)12));   // 字号  
        //ft.SetColorIndex(_variant_t((long)3));    // 字的颜色: 红色  
             ft.SetColor( _variant_t((long) RGB(255, 0, 0) ) );  
        ft.SetBold(_variant_t((long)1));    // 1:粗体,0:非粗体  
      
        Interior it; // 底色设置  
          
        range.AttachDispatch(sheet.GetRange(_variant_t("C3"), _variant_t("E6")),true);  
        it.AttachDispatch(range.GetInterior());       
        it.SetColorIndex(_variant_t((long)20)); // 底色设置为浅青色  
      
        Borders borders; // 先设置区域内所有单元格的边框  
        borders = range.GetBorders();  
        borders.SetColorIndex(_variant_t((long)1));  
        borders.SetLineStyle(_variant_t((long)1));  
        borders.SetWeight(_variant_t((long)2));  
      
        // 然后设置外边框  
        // LineStyle=线型(1~13) Weight=线宽 ColorIndex=线的颜色(-4105为自动, 1为黑色)   
        range.BorderAround(_variant_t((long)9),_variant_t((long)1),_variant_t((long)1),vtMissing);  
      
        range.AttachDispatch(sheet.GetRange(_variant_t("C8"), _variant_t("D9")),true);  
        // 合并单元格  
        range.Merge(_variant_t((long)0));  
      
      
        book.Save();                    // 保存Excel的内容  
    //  app.SetDisplayAlerts(false);    // 不弹出对话框询问是否保存  
    //  app.Quit();                     // 退出  
      
        //释放对象    
        range.ReleaseDispatch();  
        sheet.ReleaseDispatch();  
        sheets.ReleaseDispatch();  
        book.ReleaseDispatch();  
        books.ReleaseDispatch();  
        app.ReleaseDispatch();  


    展开全文
  • 第2章: Excel数据分析初级之- 数据分析入门及基本数据处理 任务8: EXCEL基本操作之导入外部数据 任务9: EXCEL基本操作之设置单元格格式、条件格式 任务10: EXCEL基本操作之保护工作表、高级筛选 任务11: 数据...
  • officemap Excel地图报表专家

    热门讨论 2010-06-24 09:13:49
    基于关联Excel商业数据,制作统一的销售地图报表;所谓”一图知天下”,您可以方便地在会议演示或例行汇报中使用Excel地图报表技术。 ■利用已有数据源,保护商业数据的私密性 兼容微软Excel2000/xp/2003/2007版本...
  • excel——动态图表

    2020-07-06 14:41:17
    复选框关联:右键设置控件格式->控制->单元格链接->选择单元格->确定->公式选项卡定义名称->输入名称->输入引用为if(复选框的结果,选择数据,选择空白数据)->创建空白的折线图->右键选择...
    勾选显示的图表
    1. 在功能区显示开发工具:文件->选项->自定义功能区的右侧->开发工具
    2. 开发工具->插入->插入复选框
    3. 复选框关联:右键设置控件格式->控制->单元格链接->选择单元格->确定->公式选项卡定义名称->输入名称->输入引用为if(复选框的结果,选择数据,选择空白数据)->创建空白的折线图->右键选择数据->添加->系列值为:=excel表名!定义的名称
    动态数据透视表
    1. 数据透视表建立好以后如果新增行,透视表无法更新。下面开始解决这个问题
      (1). counta():表示列不为空的行数
      (2). =OFFSET($A1,0,0,COUNTA(1,0,0,COUNTA(A:$A),11) #动态选择区域,定义名称的引用填写该公式。
      (3). 上述公式可以用于动态创建数据透视表,在选择表区域的时候输入公式的名称即可,这样数据表开始添加行的时候,更新数据透视表也会变化。
    2. 永远取最后十行:=OFFSET($A1,COUNTA(1,COUNTA(A:$A)-10,0,10,1)
    总结

    图表与控件一起使用实现动态图表的流程:

    1. 从开发工具插入合适的控件,右键设置控件格式设置单元格链接;
    2. 编写符合目的的公式:counta()可以计算不为空的列个数,offset(开始单元格,下移几行,右移几列,选取几行选取几列)动态选择区域;
    3. 公式选项卡中定义名称,引用填写2步骤的公式;
    4. 创建图表在选择数据中添加图例的时候,系列值填写:图表名!定义的名称
    5. 或者创建数据透视表时的区域填写:图表名!定义的名称
    展开全文
  • Excel---经典动态图表

    2021-04-11 12:37:44
    1、插入控件,右键设置控件格式,将其与一个单元格关联起来,作为我们实现动态图表的基础 2、设置自动更新的数据区域:利用公式选择不同条件下的数据区域,将此公式定义名称,方便引用数据区域 3、插入一个空白的...

    《王佩丰Excel实战课1800分钟》复习笔记21

    1. 动态图表的基本原理

    • 图表的本质: 图表中的每个系列(图例)表示一行或者一列数据,所以可以通过设置自动更新的数据区域来实现动态图表
    • 具体实现: 配合【开发工具】–【插入】控件可以实现动态的效果

    2. 具体操作步骤

    • 1、插入控件,右键设置控件格式,将其与一个单元格关联起来,作为我们实现动态图表的基础
    • 2、设置自动更新的数据区域:利用公式选择不同条件下的数据区域,将此公式定义名称,方便引用数据区域
    • 3、插入一个空白的图表,手动设置数据源,将第二步的数据区域,关联上即可

    3. offset函数

    • 基本语法: offset(基准点,向下x行,向右x列,取x行,取x列)
    • 数据区域的自动更新: 配合counta()函数
    • 例子: =offset($A1,counta(1,counta(A$4)-10,0,10,1);永远取a列数据的最后10行
    • 应用: 结合数据透视表实现数据透视表的数据源的自动更新(当往源数据中添加新数据时,只用刷新数据透视表即可)
    展开全文
  • 服务器是部件及其关联的对象。 例如,假设应用程序使用 ActiveX 控件来提供一个标准的雇员窗体,供公司的多种 应用程序使用。提供雇员窗体的 ActiveX 控件就是服务器,使用这个控件的应用程序 就是服务器的客户端。 ...
  • SpreadJS 为用户带来亲切的 Excel 使用体验的同时,满足 Web Excel 组件开发、表格文档协同编辑、数据填报、Excel 类报表设计等业务场景,极大降低了企业研发成本和项目交付风险。 点击下载SpreadJS最新试用版 ...
  • WHC第三方控件

    2018-07-16 12:51:42
    1. 跨线程的控件安全访问方式(CallCtrlWithThreadSafety.cs) 2. CheckBoxList(CheckBoxListUtil.cs) 3. 窗口管理类(ChildWinManagement.cs) 4. 由马丁•米勒http://msdn.microsoft.com/en-us/library/ms996492.aspx...
  • ChartGraph图表生成组件(电脑需安装Excel),用于将DataGridView表格(窗口程序)与GridView(网页程序)中的数据生成图表图片,然后再使用VB2008Print组件提供的图片打印功能(DrawImage)即可实现类似Excel的简单...
  • Lodop6.0web打印控件及技术手册

    热门讨论 2011-10-09 17:04:03
    2、 “导出数据Excel文件” 功能; 其设计目标是简单易用、功能足够强大,开创WEB打印开发的新局面。 Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实现复杂的打印...
  • 27如何导出数据Excel文件见样例二十七 28如何快速读取客户端系统信息见样例二十八 29如何使用其它长度单位见样例二十九 30如何分页输出页面内容见样例三十 31如何打印表格的分页小计或合计见样例三十一 32如何实现...
  • 3、找到想放置控件的位置,单击,然后 右击选择设置控件格式 4、在弹出的对话框中设置相关值段,设置需要关联的单元格,单击确认,本示例设置了两个滚动条,对应的滚定条的主要设置如下图所示: 5、点击 ...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
    本书将介绍如何定制Excel 用户窗体、开发新实用程序、用VBA 处理图表及数据透视表,以及创建事件处理应用程序。还将介绍如何使用VBA 子过程和函数过程、与其他应用程序轻松交互、构建用户友好的工具栏、菜单和帮助...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
    本书将介绍如何定制Excel 用户窗体、开发新实用程序、用VBA 处理图表及数据透视表,以及创建事件处理应用程序。还将介绍如何使用VBA 子过程和函数过程、与其他应用程序轻松交互、构建用户友好的工具栏、菜单和帮助...
  • 27.如何导出数据Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32....
  • 国外报表软件或者开源报表工具一般...是否支持控件间的动态关联。 2、 Excel 支持性 是否支持 excel 导入; 是否支持数据校验 / 自动计算; 是否支持分批加载 excel 数据。 3、 业务填报支持性 是否支持离线填报
  •  可以和各种数据源相关联,实现异构数据源之间的表关联,真正实现多源填报  处理数据灵活,通过javascript改动数据结构随时适应业务需求。  支持离线填写,可以导出excel文档,符合目前很多企业的填报流程,...
  • 7.设置和创建书签,此功能比较强大,设置书签数据、添加书签和添加红头文件就靠他了 SetFieldValue(BSTR strFieldName, BSTR strValue, BSTR strCmdOrSheetName) strFieldName:书签名 strValue:要设置的值 ...
  • 0323 如何通过代码将MSChart控件关联到MSADODC控件上 168 0324 如何修改MSChart控件的字体和颜色 168 0325 显示柱型图 168 0326 显示柱型图数据对比 169 0327 显示折线图数据信息 169 0328 显示折线图...
  • datatables button

    2018-04-23 18:59:46
    每个控件元素在数据表都有一个关联的单个字母。l - 每页显示行数的控件f - 检索条件的控件t - 表格控件i - 表信息总结的控件p - 分页控件r - 处理中的控件B-button 控件"buttons": [ { '...
  • 一、增加数据管理模块 A、采集不需要审批的数据; B、数据分类用户可自定义;...E、数据可下载为EXCEL; F、数据可导入EXCEL文件; 二、表单设计器设计升级 A、增加选择框控件 B、与数据库关联 C、选择框属性定义
  • Appium移动自动化框架

    2017-01-05 16:47:18
    Appium 框架的功能 (1)支持iOS、Android,可在多台机器上并行App 自动化,...测试数据Excel 存储输入数据控件元素、测试结果。 测试脚本:由Java 和TestNG 编写,分层结构有case、log、config、report 以及d...
  • 国外报表软件或者开源报表工具一般面向数据统计...3)报表工具应该提供人性化的输入控件,例如常用的下拉列表、复选框、下拉树等编辑风格,控件间的动态关联处理等; 4)报表工具也应该支持业务人员自己临时采集数据

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 184
精华内容 73
热门标签
关键字:

excel控件关联数据