SNV文件管理方案V.doc_第1页
SNV文件管理方案V.doc_第2页
SNV文件管理方案V.doc_第3页
SNV文件管理方案V.doc_第4页
SNV文件管理方案V.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN 文档管理方案 版本管理与差异跟踪 提交日期:拷贝份数:目 录文档说明41.SVN介绍52.SVN服务器配置92.1.服务端软件安装92.2.服务端主数据库生成92.3.服务端配置svnserve.conf92.4.服务端配置authz102.5.服务端配置passwd112.6.WinOS启动服务112.1.WinOS将启动SVN生成Sevice113.客户端软件安装及操作123.1.TortoiseSVN安装123.2.操作流程123.3.checkout(检出操作123.4.commit(提交)操作133.5.update(更新)操作133.6.解决冲突143.7.add(增加)操作143.8.删除操作154.文件版本跟踪164.1.历史版本查看164.2.查看历史文件内容175.文档修改差异对比195.1.文本文件差异205.2.XML文件差异205.3.Word文件差异215.4.Excel文件差异255.5.PPT文件差异285.6.其它文件差异286.权限管理297.SVN合并功能简介308.技术支持及说明32文档说明佳畅玩具厂的电脑部IT资料(如PCList,MailList,TelList,SoftList等)管理,现今只有最新版本数据,对这些数据的维护是按一定的时间频率更新。各个文件间没有关联性。在公司人员流动过快的情况下,整理这些烦锁资料经常会花费很多精力。在此借用微软的BizTalk产品中以人为主线的管理思想,设计一个基于开源免费软件subversion的解决方案。该方案在保证完整管理当前IT资料外,还增加 版本管理功能,历史版本查询功能,文件修改的差异追踪功能。另外还可以利用subversion归并功能来分派任务并实现权限管理。针对以上情况,此文档特提出解决方案。用户签收:执行确认:编搞:Kevin.zou1. SVN介绍 svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据(在搞ldap时就深受其害,没法根治),所以还是FSFS方式更安全一点。安全领域的SVNSVN站在更高层次上对现在的安全产品,从系统和控制的角度进行了有机和无隙的整合。 SVN是一个安全虚拟网络系统,它将系统整体的信息安全功能均衡合理地分布在不同的子系统中,使各子系统的功能得到最大限度的发挥,子系统之间互相补充,系统整体性能大于各子系统功能之和,用均衡互补的原则解决了木桶原理的问题。 SVN能在跨接Internet, Intranet, Extranet间的网络所有端点实现全面的安全,而且还能提供基于企业策略的信息管理机制以充分有效地利用有限的带宽。SVN可以满足各种企业VPN的要求,通过为公司内部网络、远程和移动用户、分支机构和合作伙伴提供基于Internet的安全连接。所以,我们可以将SVN看成是VPN、防火墙、基于企业策略的信息管理软件集成在一起的Internet安全的综合解决方案。在这样一个网络系统中,所有互联网服务器端和客户端都是安全的,并有一个信息管理机制以不断地通过这个外部网络环境动态地分析及满足客户的特定带宽需求。SVN提供了目前基于网络实现的eBusiness 应用的安全服务,它包含: 对多种应用进行全面的安全认证; 支持多种认证及PKI 功能强大并对用户透明的通讯加密; 面向用户的集中安全策略管理; 统一跨接Internet、Intranet、Extranet的通讯。完整的SVN体系结构应包括以下部分带有防火墙的VPN网关,它是一个将防火墙和VPN技术紧密结合的网关产品; SVN安全远程客户端软件包,一个功能强大的VPN客户端软件,支持台式机用户、远程用户和移动用户,具有集中化管理的个人防火墙功能和VPN用户的安全认证功能; SVN证书管理模块,一个用于SVN的完整PKI解决方案,它将完善的CA和LDAP目录服务器技术集成在一起; SVN硬件加密卡,可以通过硬件技术实现功能强大的各种算法以提高VPN的速度和性能; SVN智能带宽管理模块,一个基于企业策略的带宽管理解决方案,可以智能地管理有限的带宽资源,以确保用于企业重要应用的VPN性能可靠; SVN冗余管理模块,通过冗余网关集群和防火墙VPN内的SVN冗余模块,对执行重要任务的VPN和防火墙应用在出现故障时实现无缝切换。 自动地址转换模块,一个自动管理IP地址和命名的解决方案,通过提供IP地址服务的跟踪和集中化管理,确保可靠地控制地址分配和提高TCP/IP管理效率; SVN安全服务器软件包,专门保护单个应用服务器安全的VPN网关软件,它可以保护进行敏感操作的服务器免受攻击和未授权的访问,使客户端建立与服务器间的安全认证和支持交换加密数据的连接; SVN安全客户端软件包,它将基于状态检测的防火墙和基于IPSec的VPN客户端软件集成在客户端机器上,通过提供集中管理的个人防火墙和对所有企业VPN用户的安全认证,增强客户端机器的安全性。它与SVN安全远程客户端软件功能相比,增强了客户端的安全功能,如访问控制和安全初始化控制等。SVN与CVS优缺点分析所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了。不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了。更有甚者,它甚至让人重回VSS。CVS和SVN的比较类似与比较C+和Java。很明显CVS和SVN都远比SourceSafe强大的多,如同C+和Java比Basic强大的多。CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。SVN修正并添加了一些CVS并不拥有功能。例如,创建标志和分支dubious,你在编辑文件是其他人不会有任何通知。SVN并不是CVS的替代品,只是个不同的系统,类似于CVS。它有些特有的功能,足以作为采用它的理由。这些功能使他更适合于开发环境,例如对PowerBuilder。下面你可以找到两者的相对优势、劣势。 1 存储类型格式 CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。 SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。 2 速度 CVS比较慢。 整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。 3 标志&分支 SVN把采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:现在分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。 4 元数据 CVS只允许存储文件。 SVN允许一个文件有任意都的可命名属性,功能十分完全。 5 文件类型 CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。 SVN会关心所有的文件类型,不需要你来手工操作。 6 滚回 CVS允许任意的滚回,在任意一个已递交的版本上,尽管这要花些时间(所有的文件都要分别处理)。 SVN不允许递交后滚回。建议把版本库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(SVN的滚回操作实际上是merge操作) 7 事务 CVS中的“零或一”事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。作为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。这样这些文件将在两阶段中被检入。SVN的确支持“零或一”事务原则,这是SVN的一大优势。SVN的发展历史早在2000年,CollabNet, Inc.就开始召集开发人员开发CVS的替代品。CollabNet 提供一套名为SourceCast协同工作套件,其中的一部分组件是版本控制。虽然SourceCast使用CVS作为其最初的版本控制系统,但是CVS的种种限制从一开始就处处可见,最后CollabNet明白必须要找到一个更好的解决方案。不幸的是,至少在免费license中,因为没有更好的选择,CVS已经广泛成为了开源世界中事实上的标准。所以CollabNet决定开发一个新的版本控制系统,保留CVS的基本特性但去除CVS的bug和不好的特性。 在2000年2月,他们联系使用CVS开发开源项目(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel,并征求了他是否愿意在这个新的项目中担任一个角色。巧合的是,当时Karl已经和他的朋友Jim Blandy讨论了一个关于新的版本控制系统的设计。在1995年,这两人就成立了Cyclic Software,一个提供CVS的商业支持的软件公司。虽然他们经营商业服务,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim认真思考更好的方法来管理数据,不但确定名字为“Subversion”,而且完成了Subversion档案库的基础设计。 当CollabNet的电话到来时,Karl立即答应了加入项目中,而且Jim让他的雇主RedHat Software同意让他在这个项目中不定期工作。CollabNet雇用了Karl和Ben Collins-Sussman,并在5月开始了详细设计工作。在得到了来自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(当时是一名活跃在WebDAV/DeltaV规范过程的自由程序员)很多创意的帮助下,Subversion很快地引起了一个活跃开发者社区的注意。它找出并欢迎很多同样在CVS上受到挫折的社员能来为这个项目做点什么。 Subversion 最初的设计Team定下了几个简单的目标。 它必须在功能上可取代 CVS,也就是说, 所有 CVS 可做到的事, 它都要能够作到。 在修正最明显的瑕疵的同时, 还要保留相同的开发模式。 还有, Subversion 应该要和 CVS 很相像, 任何 CVS 使用者只要花费少许的力气, 就可以很快地上手。 经过十四个月的编码后, Subversion 于2001年8月31日开始实现 “自行管理”。 也就是说, 开发人员不再使用 CVS 来管理 Subversion 的代码, 而以 Subversion 自己来管理。其他从启动这个项目到现在,虽然CollabNet提供了大部分的资金(它付出几位全职 Subversion 开发人员的薪水), 但这还是个开源项目, 由一组松散透明的规则所约定。 CollabNet 拥有代码的版权完全符合 Debian Free Software Guidelines。 换句话说, 每个人都可以随意地免费下载、修改、以及重新发布 Subversion; 完全不需要经过 CollabNet, 或是任何人的允许。2. SVN服务器配置 SVN服务端软件也在不断升级,此处用svn-1.4.6为例。2.1. 服务端软件安装安装svn-1.4.6-setup.exe(可以在/下载得到)2.2. 服务端主数据库生成安装成功后,在硬盘上创建目录,如E:svntest,使用命令创建版本库 svnadmin create E:svntest,建立工程,svn自动会在该目录下建立若干文件 2.3. 服务端配置svnserve.conf修改版本库confsvnserve.conf# This file controls the configuration of the svnserve daemon, if you# use it to allow access to this repository. (If you only allow# access through http: and/or file: URLs, then this file is# irrelevant.)# Visit / for more information.general# These options control access to the repository for unauthenticated# and authenticated users. Valid values are write, read,# and none. The sample settings below are the defaults.anon-access = readauth-access = write# The password-db option controls the location of the password# database file. Unless you specify a path starting with a /,# the files location is relative to the conf directory.# Uncomment the line below to use the default password file.password-db = passwd# The authz-db option controls the location of the authorization# rules for path-based access control. Unless you specify a path# starting with a /, the files location is relative to the conf# directory. If you dont specify an authz-db, no path-based access# control is done.# Uncomment the line below to use the default authorization file.#authz-db = authz# This option specifies the authentication realm of the repository.# If two repositories have the same authentication realm, they should# have the same password database, and vice versa. The default realm# is repositorys uuid.# realm = My First Repository2.4. 服务端配置authz修改配置文件confauthz# This file controls the configuration of the svnserve daemon, if you# use it to allow access to this repository. (If you only allow# access through http: and/or file: URLs, then this file is# irrelevant.)# Visit / for more information.general# These options control access to the repository for unauthenticated# and authenticated users. Valid values are write, read,# and none. The sample settings below are the defaults.anon-access = readauth-access = write# The password-db option controls the location of the password# database file. Unless you specify a path starting with a /,# the files location is relative to the conf directory.# Uncomment the line below to use the default password file.password-db = passwd# The authz-db option controls the location of the authorization# rules for path-based access control. Unless you specify a path# starting with a /, the files location is relative to the conf# directory. If you dont specify an authz-db, no path-based access# control is done.# Uncomment the line below to use the default authorization file.#authz-db = authz# This option specifies the authentication realm of the repository.# If two repositories have the same authentication realm, they should# have the same password database, and vice versa. The default realm# is repositorys uuid.# realm = My First Repository2.5. 服务端配置passwd修改配置文件confpasswd# This file is an example password file for svnserve.# Its format is similar to that of svnserve.conf. As shown in the# example below it contains one section labelled users.# The name and password for each user follow, one account per line.users# harry = harryssecret# sally = sallyssecretadmin = admin2.6. WinOS启动服务启动SVN,svnserve -d -r E:svntest 2.1. WinOS将启动SVN生成Sevice将启动SVN生成服务的批处理程序echo offecho #生成Windows服务#echo # # echo # #sc create svnService binpath= c:program filesSubversionbinsvnserve.exe -service -r E:svntest displayname= SVNService depend= Tcpip start= autoecho # # echo # # echo #生成服务结束#echo. &pause注意 系统环境变量Path的取值要含有C:WindowsSystem32,如: %JAVA_HOME%bin;%JAVA_HOME%jrebin ;C:Program FilesTortoiseSVNbin;C:Program FilesMicrosoft SQL Server90Toolsbinn;C:WindowsSystem32;C:Program FilesSubversionbin3. 客户端软件安装及操作完成了svn服务器的安装配置,怎么使用svn呢?在Windows下,最常用的svn客户端是TortoiseSVN,有时简称为TSVN。在资源管理器中,鼠标右键点击任意位置,右键菜单中出现“SVN Checkout”,即为安装成功。3.1. TortoiseSVN安装可以从/下载最新版,目前最新版是TortoiseSVN-4908。下载后,安装。重启机器,使目录图标生效。在资源管理器中,鼠标右键点击任意位置,右键菜单中出现“SVN Checkout”,即为安装成功。3.2. 操作流程 开发人员使用svn进行开发的一般流程是:checkout(检出)项目 更新文件或目录 update 修改文件或目录 commit(提交)变更 增加文件或目录 add(增加) 文件或目录 commit(提交) 删除文件或目录 commit(提交)上一级目录其中,checkout只进行一次,update、commit、add操作根据需要会经常使用。 3.3. checkout(检出操作 在资源管理器中,鼠标右键点击任意位置,在菜单中选择”SVN Checkout”。出现对话框,在”URL of repository:”中输入svn串,格式是”协议:/ip:port/版本库/项目/目录“。根据实际情况输入,例如/p/google-web-toolkit/source。如有疑问,向svn服务器管理员询问。在“checkout directory”中输入本地存放代码的目录,请选择空目录或新目录。svn会清空该目录下的一切文件。输入完毕,点击”ok”按钮。如果需要,会提示输入用户名和密码。选上”Save authentication”后,以后可以自动登录,不必重输密码。checkout有时候时间会很长。结束,点”ok”。3.4. commit(提交)操作 把本地目录中变化了的文件或目录提交到版本库中,用commit操作。增加新文件或目录,要先用add,再commit。删除文件或目录,commit上一级目录。在资源管理器中,选择本地目录或文件,鼠标右键菜单选择”SVN Commit”。显示分上下2个框的界面。在上框输入说明文字,建议写版本号或变更原因,以便将来查找。下框列出提交的内容。没有可提交的内容,下框中会显示一段说明文字。点“ok”。提交结束,显示结果。点“ok”。3.5. update(更新)操作 在资源管理器中,选择本地目录或文件,鼠标右键菜单选择”SVN Update”。会提示有无文件需要更新,点”ok”完成。3.6. 解决冲突 如果commit时出现“You have to update your work copy first.”红色警告,说明版本库中的此文件已经被其他人修改了。请先点“ok”按钮退出。执行update,然后再commit。如果修改与update得到的代码不冲突,则自动合并。如果冲突(比如对同一行代码进行了修改),则出现”One or more files are in a conflicted state.“红色警告,并产生几个文件记录冲突。一般情况下,我们不要直接编辑冲突文件。而按照以下操作手工解决冲突。在资源管理器中,选择commit时冲突的那个文件,鼠标右键菜单选择”Edit conficts”。出现界面,分为”Theirs”、”Mine”和”Merged”3部分,表示”别人修改的内容”、 ”我修改的内容”和”合并后的结果”3部分。我们是要将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。合并一般分为4种情况: 保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”Use this text block”。 舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”Use this text block”。 同时保留”我的修改”和”别人的修改”,并将”我的修改” 放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from mine before theirs”。 同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from theirs before mine”。 合并完成,Ctrl+S存盘,退出。然后,在资源管理器中,选择冲突文件,鼠标右键菜单选择”Resolved”,标记冲突已解决。系统会自动删除因冲突而新建的文件。此时,就可以继续进行commit操作了。3.7. add(增加)操作 增加新文件或目录,要先用add,再commit。在资源管理器中,选择新增的目录或文件,鼠标右键菜单选择”Add”。提示增加的文件。点“ok”继续。结束点“ok”。3.8. 删除操作 删除文件或目录,commit上一级目录。4. 文件版本跟踪相关操作要按以下顺序进行4.1. 历史版本查看右键点要查的文件:确定进入下一页面,4.2. 查看历史文件内容此处可以查看历史文件内容,或历史文件另存盘5. 文档修改差异对比 当查看某文件在某次的修改内容,方法如下: 运行后。5.1. 文本文件差异TSVN默认支持文本文件差异比较5.2. XML文件差异TSVN默认支持XML文件的差异比较: 5.3. Word文件差异 默认情况下TSVN不支持Word格式文件的差异比较,要通过以下设置方能实现。在Word文档的VBA中加入模块代码:Sub SvnCompare()If Documents.Count = 2 Then Exit SubActiveDocument.Compare Documents(2).Path & _ & Documents(2).Name, ComparisonEnd SubSub SvnMerge()If Documents.Count = 2 Then Exit SubActiveDocument.Merge Documents(2).Path & _ & Documents(2).NameEnd Sub还有一种方法比较Word主要只是用到了安装目录下的两个比较差异的脚本,如果提示找不到两个文件,只要把相应的代码放到这两个脚本里,就可以比较了!制作方法:新建记事本,将下面对应的代码复制进去,另存为相应的脚本文件即可(路径为安装TortoiseSVN的路径下的:Diff-Scripts 目录)Word的,存成:diff-doc.js 内容为:var objArgs,num,sBaseDoc,sNewDoc,objScript,word,destination;/ Microsoft Office versions for Microsoft Windows OSvar vOffice2000 = 9;var vOffice2002 = 10;var vOffice2003 = 11;var vOffice2007 = 12;/ WdCompareTargetvar wdCompareTargetSelected = 0;var wdCompareTargetCurrent = 1;var wdCompareTargetNew = 2;/ WdViewTypevar wdMasterView = 5;var wdNormalView = 1;var wdOutlineView = 2;/ WdSaveOptionsvar wdDoNotSaveChanges = 0;var wdPromptToSaveChanges = -2;var wdSaveChanges = -1;objArgs = WScript.Arguments;num = objArgs.length;if (num 2) WScript.Echo(Usage: CScript | WScript diff-doc.js base.doc new.doc); WScript.Quit(1);sBaseDoc = objArgs(0);sNewDoc = objArgs(1);objScript = new ActiveXObject(Scripting.FileSystemObject );if ( ! objScript.FileExists(sBaseDoc) WScript.Echo(File + sBaseDoc + does not exist.Cannot compare the documents.); WScript.Quit(1);if ( ! objScript.FileExists(sNewDoc) WScript.Echo(File + sNewDoc + does not exist.Cannot compare the documents.); WScript.Quit(1);objScript = null;try word = WScript.CreateObject(Word.Application) ;catch(e) WScript.Echo(You must have Microsoft Word installed to perform this operation.); WScript.Quit(1);word.visible = true;/ Open the new documentdestination = word.Documents.Open(sNewDoc) ;/ If the Type property returns either wdOutlineView or wdMasterView and the Count property returns zero, the current document is an outline.if (destination.ActiveWindow.View.Type = wdOutlineView) | (destination.ActiveWindow.View.Type = wdMasterView) & (destination.Subdocuments.Count = 0) / Change the Type property of the current document to normal destination.ActiveWindow.View.Type = wdNormalView;/ Compare to the base documentif (Number(word.Version) = vOffice2000) / Compare for Office 2000 and earlier destination.Compare(sBaseDoc);else / Compare for Office XP (2002) and later destination.Compare(sBaseDoc, Comparison, wdCompareTargetNew, true, true); / Show the comparison resultif (Number(word.Version) = vOffice2002) destination.Close(wdDoNotSaveChanges);TSVN通过这里的设置来调用VBS5.4. Excel文件差异 比较Excel主要只是用到了安装目录下的两个比较差异的脚本,如果提示找不到两个文件,只要把相应的代码放到这两个脚本里,就可以比较了!制作方法:新建记事本,将下面对应的代码复制进去,另存为相应的脚本文件即可(路径为安装TortoiseSVN的路径下的:Diff-Scripts 目录)Excel的,存成:diff-xls.vbsdim objExcelApp, objArgs, objScript, objBaseDoc, objNewDoc, objWorkSheet, iSet objArgs = WScript.Argumentsnum = objArgs.Countif num 2 then MsgBox Usage: CScript | WScript compare.vbs base.doc new.doc, vbExclamation, Invalid arguments WScript.Quit 1end ifsBaseDoc = objArgs(0)sNewDoc = objArgs(1)Set objScript = CreateObject(Scripting.FileSystemObject)If objScript.FileExists(sBaseDoc) = False Then MsgBox File + sBaseDoc + does not exist.Cannot compare the documents., vbExclamation, File not found Wscript.Quit 1End IfIf objScript.FileExists(sNewDoc) = False Then MsgBox File + sNewDoc + does not exist.Cannot compare the documents., vbExclamation, File not found Wscript.Quit 1End IfSet objScript = NothingOn Error Resume NextSet objExcelApp = Wscript.CreateObject(Excel.Application)If Err.Number 0 Then Wscript.Echo You must have Excel installed to perform this operation. Wscript.Quit 1End IfOpen base excel sheetobjExcelApp.Workbooks.Open sBaseDocOpen new excel sheetobjExcelApp.Workbooks.Open sNewDocShow Excel windowobjExcelApp.Visible = TrueCreate a compare side by side viewobjExcelApp.Windows.CompareSideBySideWith(objExcelApp.Windows(2).Caption)If Err.Number 0 Then objExcelApp.Application.WindowState = xlMaximized objExcelApp.Windows.Arrange(-4128)End IfMark differences in sNewDoc redi = 1objExcelApp.Workbooks(1).screenUpdating=FalseobjExcelApp.Workbooks(2).screenUpdating=FalseFor Each objWorkSheet In objExcelApp.Workbooks(2).Worksheets objworksheet.Cells.FormatConditions.Delete objExcelApp.Workbooks(1).Sheets(i).Copy ,objExcelApp.Workbooks(2).Sheets(i*2-1) objExcelApp.Workbooks(2).Sheets(i*2).Name = Dummy_for_Comparison & i objworksheet.Activate To create a local formula the cell A1 is used original_content = objworksheet.Cells(1,1).Formula String sFormula objworksheet.Cells(1,1).Formula = =INDIRECT( & objExcelApp.Workbooks(2).Sheets(i*2).name & (2)&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论