VB程序员博客

VB程序开发

如下:如何用VB实现提取DCHNO对应的数据?如果回答得好,追加给分,第一次发帖!!!!

XXXX
ABCDEF1

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                4      0        2    NO      48    ON    516
                                  3                        545
                                                            576
                                                            593
                                                            631
2                0      0        2    NO      47    OFF  550

XXXX
ABCDEF2

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0              14      0        2    NO      33    ON    519
                                  3                        543
                                                            562
                                                            566
                                                            573
                                                            576
                                                            611
                                                            615
                                                            623
2                2      0        2    NO      39    OFF  620
                                  3

XXXX
ABCDEF3

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                3      0        2    NO      24    ON    517
                                                            541
                                                            557
                                                            592
                                                            595
                                                            599
                                                            606
2                0      0        2    NO      13    OFF  545line input #文件号,字符串变量读表?
一行一行读吧,然后用split(input," ")之类的分割
把空内容去掉,就得到你的数组了……text文件是什么格式?
fixed,tabed/空格分的?用 split ,很简单的,你要取哪个数?谢谢大家都回答,我没说明我的目的,对不起;
是这样的,我要提取的是DCHNO对应下面的数字,其实用TXT打开是很规范的,不知道发上来怎么会变扭曲了。
比如:
DCHNO
541
557
592
592
592                                                         
谢谢大家                                                          我发现你贴出来的文本内容本身就是错位的啊。
如果是“规范”的,提取数据很容易。

可不可以提供个实际样本来看一下呢?
如果文件比较大,可以只提供一部分数据。
不难考到excel ,在数据拆分,用距离拆分就行<


如下:如何用VB实现提取DCHNO对应的数据?如果回答得好,追加给分,第一次发帖!!!!

XXXX
ABCDEF1

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                4      0        2    NO      48    ON    516
                                  3                        545
                                                            576
                                                            593
                                                            631
2                0      0        2    NO      47    OFF  550

XXXX
ABCDEF2

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0              14      0        2    NO      33    ON    519
                                  3                        543
                                                            562
                                                            566
                                                            573
                                                            576
                                                            611
                                                            615
                                                            623
2                2      0        2    NO      39    OFF  620
                                  3

XXXX
ABCDEF3

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                3      0        2    NO      24    ON    517
                                                            541
                                                            557
                                                            592
                                                            595
                                                            599
                                                            606
2                0      0        2    NO      13    OFF  545line input #文件号,字符串变量读表?
一行一行读吧,然后用split(input," ")之类的分割
把空内容去掉,就得到你的数组了……text文件是什么格式?
fixed,tabed/空格分的?用 split ,很简单的,你要取哪个数?谢谢大家都回答,我没说明我的目的,对不起;
是这样的,我要提取的是DCHNO对应下面的数字,其实用TXT打开是很规范的,不知道发上来怎么会变扭曲了。
比如:
DCHNO
541
557
592
592
592                                                         
谢谢大家                                                          我发现你贴出来的文本内容本身就是错位的啊。
如果是“规范”的,提取数据很容易。

可不可以提供个实际样本来看一下呢?
如果文件比较大,可以只提供一部分数据。
不难考到excel ,在数据拆分,用距离拆分就行<


如下:如何用VB实现提取DCHNO对应的数据?如果回答得好,追加给分,第一次发帖!!!!

XXXX
ABCDEF1

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                4      0        2    NO      48    ON    516
                                  3                        545
                                                            576
                                                            593
                                                            631
2                0      0        2    NO      47    OFF  550

XXXX
ABCDEF2

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0              14      0        2    NO      33    ON    519
                                  3                        543
                                                            562
                                                            566
                                                            573
                                                            576
                                                            611
                                                            615
                                                            623
2                2      0        2    NO      39    OFF  620
                                  3

XXXX
ABCDEF3

CHGR  SCTYPE    SDCCH  SDCCHAC  TN  CBCH    HSN  HOP  DCHNO
0                3      0        2    NO      24    ON    517
                                                            541
                                                            557
                                                            592
                                                            595
                                                            599
                                                            606
2                0      0        2    NO      13    OFF  545line input #文件号,字符串变量读表?
一行一行读吧,然后用split(input," ")之类的分割
把空内容去掉,就得到你的数组了……text文件是什么格式?
fixed,tabed/空格分的?用 split ,很简单的,你要取哪个数?谢谢大家都回答,我没说明我的目的,对不起;
是这样的,我要提取的是DCHNO对应下面的数字,其实用TXT打开是很规范的,不知道发上来怎么会变扭曲了。
比如:
DCHNO
541
557
592
592
592                                                         
谢谢大家                                                          我发现你贴出来的文本内容本身就是错位的啊。
如果是“规范”的,提取数据很容易。

可不可以提供个实际样本来看一下呢?
如果文件比较大,可以只提供一部分数据。
不难考到excel ,在数据拆分,用距离拆分就行<


不是目录,是指打开word后在左边显示的那个可以用来导航的东东,有没有办法整体提取,如果没有直接的办法,那有没有其他方法?

多谢各位了!

还记得大体思路吗?
是从哪个对象里获得的?
而且,我还需要保存链接信息。
多谢了!

ding

ding

多谢帮顶^_^

专家们快出来帮俺解答下吧。。。

“如何在VB打开Word文档”。看看: 
  http://community.csdn.net/Expert/topic/3549/3549637.xml?temp=.4134333

Dim  app  As  New  Word.Application 
  Dim  doc  As  Word.Document 
   
  app.Visible  =  True 
  doc  =  app.Documents.Open("e:xxx.doc") 
   
  Dim  para 
  For  Each  para  In  app.ActiveDocument.Paragraphs 
        if  para.style  =  "标题  1"  then 
              MsgBox  app.activedocument.range.text 
        end  if 
  Next  para

用para.outlinelevel而不用para.Style.  Outlinelevel  1-9  相当于标题级别1-9.  OutlineLevel  10  为正文。 

来源:http://topic.csdn.net/t/20060630/11/4852506.html

Private  Declare  Function  FindWindow  Lib  "user32"  Alias  "FindWindowA"  (ByVal  lpClassName  As  String,  ByVal  lpWindowName  As  String)  As  Long 
  Private  Declare  Function  MoveWindow  Lib  "user32"  (ByVal  hwnd  As  Long,  ByVal  x  As  Long,  ByVal  y  As  Long,  ByVal  nWidth  As  Long,  ByVal  nHeight  As  Long,  ByVal  bRepaint  As  Long)  As  Long 
   
  Private  Sub  Command1_Click() 
          Dim  wdApp  As  Object 
          Dim  wdBook  As  Object 
          Set  wdApp  =  CreateObject("Word.Application") 
          Set  wdBook  =  wdApp.Documents.Open("c: est.doc") 
          wdApp.Visible  =  True 
           
          If  ActiveWindow.View.SplitSpecial  =  wdPaneNone  Then 
                  ActiveWindow.ActivePane.View.Type  =  wdMasterView 
                  'ActiveWindow.ActivePane.View.Type  =wdNormalView 
                  'ActiveWindow.ActivePane.View.Type  =wdOutlineView 
                  'ActiveWindow.ActivePane.View.Type  =wdPrintPreview 
                  'ActiveWindow.ActivePane.View.Type  =wdPrintView 
                  'ActiveWindow.ActivePane.View.Type  =  wdWebView 
          Else 
                  ActiveWindow.View.Type  =  wdMasterView 
                  'ActiveWindow.View.Type  =  wdNormalView 
                  'ActiveWindow.View.Type  =  wdOutlineView 
                  'ActiveWindow.View.Type  =  wdPrintPreview 
                  'ActiveWindow.View.Type  =  wdPrintView 
                  'ActiveWindow.View.Type  =  wdWebView 
          End  If 
          Application.ActiveWindow.DocumentMap  =  True        '显示文档结构 
           
          Dim  wHwnd  As  Long 
          wHwnd  =  FindWindow("OpusApp",  "Word窗体的标题") 
          MoveWindow  wHwnd,  100,  100,  400,  300,  True 
  End  Sub 
   
  —————– 
  wdMasterView 
  wdNormalView 
  wdOutlineView 
  wdPrintPreview 
  wdPrintView 
  wdWebView 
   
  这是些Word的几种显示模式,自己一个合适的


请问哪位高手知道在vb中如何操作word文档。我想达到的要求是:在vb中输出数据到word文档中(未建好的文档)。最好是有现成的完整的代码,在此先谢过各位了!急需!!谢谢!!!

不懂,顶一下,
楼主是兵哥哥?

不懂,帮顶

1、引用word类,我用的是Microsoft word 11.0 object library(11.0为版本号,安装的office版本不同而不同)。
2、设置word程序对象:Dim owdApp As Word.Application或Dim owdapp As New Word.Application(直接创建新对象)
3、添加新文档:Set oWdActiveDoc = owdApp.Documents.Add()
4、由数据库里按要求提取数据并写入文档:
内容太多不写了,可以参阅word的宏录入和宏编辑以及它所提供的帮助,也无外乎是选择一个区域(selection),把值赋予它或设值它的格式。
5、保存退出。If Not oWdActiveDoc Is Nothing Then oWdActiveDoc.SaveAs filename:=strTname
6、关闭对象set owdactivedoc =nothing: set owdapp=nothing

http://blog.csdn.net/mfkinfo/archive/2009/01/02/3686625.aspx


我想将"c:1.doc"文档中的所有内容完整地输出到text1.text中,1.doc中有图片,汉字,字母。使用OPEN的方法肯定是不行的,不知如何实现?如果textbox控件不行,也可以使用picturebox或image也一样。只要能完整显示出1.doc的内容即可.请大虾赐教,谢谢

以下引自MSDN:
运行时用 OLE 容器控件创建对象
要在运行时创建链接或嵌入对象,需要在代码中使用方法和属性。OLE 容器控件有各种用来操作链接或嵌入对象的属性和方法。关于应用于 OLE 容器控件的全部属性和方法的清单,请参阅“OLE 容器控件”。

使用 Object 属性
通过使用 OLE 容器控件的 Object 属性,可以使用链接或嵌入对象的属性和方法。Object 属性是运行时、只读属性,它保持对 OLE 容器控件中的对象的引用。使用该属性执行 OLE 容器控件的自动化任务,以及程序化操作对象支持的属性和方法:

strObjName = oleObj1.Object.Name

为使用此属性,OLE 容器控件必须包含可编程的对象。关于可编程对象的详细信息,请参阅“ActiveX 部件的类型”。

运行时创建链接对象
可以用OLE容器控件的 CreateLink 方法,在运行时从文件中创建一个链接对象。这种方法需要一个文件参数 sourcedoc,从这个文件创建对象;还需要一个可选参数 sourceitem,它规定了想要从源文件中链接的数据。运行时,下面代码创建链接对象:

oleObj1.CreateLink "C:ExcelTest.xls"

注意 如果用“CreateLink”创建一个链接的对象,不必在“属性”窗口设置“类”、“SourceDoc”和“SourceItem”属性。

详细信息 请参阅“CreateLink 方法”。

在运行时创建嵌入对象
欲在运行时,从文件中创建一个嵌入的对象,可以使用 CreateEmbed 方法。这种方法有两个参数,sourcedoc 和 class(如果指定 SourceDoc,class 是可选的)。Sourcedoc 决定对象的模板,而 class 决定对象的类型。当用 CreateEmbed 时,不需要设置 SourceDoc 和 Class 属性.

下列代码,用现存文件作为对象的模板创建嵌入的对象。

oleObj1.CreateEmbed "Q1profit.xls"

详细信息 请参阅“CreateEmbed 方法”。

当创建一个空的嵌入的对象时,最好激活将要为对象提供数据的 ActiveX 部件。此时,可以使用 DoVerb 方法。它允许用户在运行时将任何数据输入应用程序中。然后,用户选择 ActiveX 部件的 Update 命令(这种菜单命令将出现在部件的“文件”菜单上),显示这些最新进入 OLE 容器控件中的数据。

要在运行时创建一个空的嵌入对象,请按照以下步骤执行:

不指定源文档,用 CreateEmbed 方法创建一个空的嵌入对象。例如,下面的 代码在 OLE 容器控件中插入一个 Microsoft Excel Worksheet 的文件模板。
oleObj1.CreateEmbed "","Excel.Sheet"

使用 DoVerb 的方法。DoVerb 方法的缺省动词依应用程序而定。对 Micosoft Excel,缺省的动词是 Edit。
例如,下列代码创建一个空的嵌入对象,然后激活使用缺省 DoVerb 操作创建该对象的应用程序。

oleObj1.CreateEmbed "", "Excel.Sheet"
oleObj1.DoVerb -5  '激活

当创建一个包含有不同应用程序的多种信息的文档应用程序时,提供空的嵌入对象是有效的方法。关于更详细的信息,请参阅“运行时让用户规定对象”。

将数据库与 OLE 容器控件绑定
可以将 OLE 容器控件与存储在 Microsoft Jet 数据库引擎或 Microsoft Access 数据库中的数据绑定。如果有一个雇员照片表的数据库,就可能要这么做。如果这些照片作为对象被存储,可以将它们与 OLE 容器控件绑定,并将它们作为用数据控件访问的每个记录显示在窗体上。为了将数据与这些数据库中的数据绑定,需要在 DataSource 属性中规定数据源(数据集名),并在 OLE 容器控件的 Datafield 属性中规定来自数据源的字段的名称。当从数据库显示一个对象时,OLE 容器控件允许用户激活、编辑和更新对象。如同任何被绑定的控件一样,当记录位置被改变时,被更新的对象将自动写回数据库。

详细信息  请参阅《数据访问指南》。

用Webbrowser控件打开即可

天狼工作室
http://www.j2soft.cn

楼上的方法可行我用下面的代码试了试,效果还好
Private Sub Form_Load()

WebBrowser1.Navigate "C:VB6.doc"
End Sub

WebBrowserrp控件在部件中是那一个?

Private Sub Command1_Click()
Dim doc    As Word.Document
  Dim win    As Word.Window
  With OLE1
  .SizeMode = 1
  .CreateEmbed "C:G.doc"
  .DoVerb vbOLEPrimary
  .AutoVerbMenu = False
  End With
                           
  Set doc = OLE1.object
  Set win = doc.ActiveWindow
   
  OLE1.Move 0, 0, Picture1.Width - 70, Picture1.Height - 120

  win.ActivePane.DisplayRulers = False    'Ⲃ𛃏㔃ꂾⱃꂳ㟠
  win.ActivePane.DisplayVerticalRuler = False    'Ⲃ𛃏㔃ꂾⱃꂳ㟠
  win.DisplayVerticalScrollBar = True    '㏃𔃊⾂𙃶ⶂ㵠
  win.DisplayHorizontalScrollBar = True    '㏃𔃊⾂𙃶ⶂ㵠
  doc.ActiveWindow.ActivePane.SmallScroll Down:=10  '㒃悶⯃㖃㠼br />
End Sub

我用这段代码,是可以把WORD文件都显示出来了,但是总是会跳转到第一页

以上代码来自网络

抛砖引玉

ok,再请教下如何让webbrowser只读?

WebBrowser是MicroSoft Internet Controls,是个IE控件,不存在只读的问题


public wdapp as word.application

sub createword()
dim doc as word.document
if wdapp is nothing then
  set wdapp =new word.application
else
  set wdapp=getobject(,"word.application")'没有word程序运行时会报错
end if
set doc =wdapp.documents.add
对doc添加内容
对doc进行页面设置
wdapp.visable =true
set doc=nothing
end sub

程序内有多处类似sub createword过程用到wdapp,只打开多个word文档时,不全部关闭再新建不出错,而将所有的文档也是就word的进程结束后,再调用过程,set wdapp=getobject(,"word.application")就会出错。
而将if判断语句去掉改为set wdapp =new word.application(浪费内存),打开多个文档,只要关闭第一个建立的文档(其它的不关闭),再调用过程,对doc进行页面设置就会提示“462错误, 远程服务器不存在或不可用”,而同时对doc进行的其它操作正常,不得其解,请教高人帮忙,在此谢过!!!
如何正确的判断word运行的状态,正确释放wdapp,正确控制word的方法?


vb不能显示ado的帮助怎么解决?
本机装的是msdn for vb6.
vb的ado帮助是在那个目录下?

我知道精简版的msdn是没有ado的帮助文档的。
但我想在vb下就可以直接用这个文档,不知道应该放在那个位置还是要设置什么东西。
搞得现在要用的时候总是打开这个文档,麻烦。

没人?

你在office安装目录下找找 2052

如果你的VB安装在默认位置,如果你的MSDN也安装在默认位置,那ADO的HELP就应该在这里:
C:Program FilesMicrosoft Visual StudioMSDN9898VS2052ado200.chm

引用 5 楼 SupermanKing 的回复:
如果你的VB安装在默认位置,如果你的MSDN也安装在默认位置,那ADO的HELP就应该在这里:
C:Program FilesMicrosoft Visual StudioMSDN9898VS2052ado200.chm

还是不行的。
提示“不能显示帮助”。

引用 5 楼 SupermanKing 的回复:
如果你的VB安装在默认位置,如果你的MSDN也安装在默认位置,那ADO的HELP就应该在这里:
C:Program FilesMicrosoft Visual StudioMSDN9898VS2052ado200.chm

我的电脑在这个目录下没有这个文件,我自己拷贝一份进去了还是不行。
ADO210.CHI这个文件倒是有的。

MSDN中的原话,在MSDN的这个位置
MSDN Libeary Visual Studio 6.0Visual Studio DocumentationData Access 工具技术Microsoft Data Access 组件Microsoft Data Access 组件概览

文章内容如下:
Microsoft Data Access 组件概览
Microsoft Data Access 组件是 Microsoft Data Access SDK 的一部分,而 Microsoft Data Access SDK 集成 Platform SDK。您可以在 Microsoft Developer Network Library EditionSDK DocumentationPlatform SDKDatabase 及 Messaging ServicesMicrosoft Data Access SDK 找到 Microsoft Data Access 组件。Microsoft Data Access 包含下列组件:

ActiveX Data Objects (ADO)
Microsoft ActiveX Data Objects (ADO) 是重要的应用程序接口 (API) (介于数据及信息)。ADO 提供一致且快速的数据存取和支持各种开发需求,包含建立使用应用程序、工具、语系、或 Internet 浏览器的前端数据库客户端及业务对象。ADO 是设计成一个数据接口,给予单一及多客户/服务器和 Web 数据开发解决方案。ADO 的主要好处是使用简单、快速、不需太多内存、及只占小部分的磁盘空间。

ADO 为 OLE DB 提供了一个简单使用接口; 而 OLE DB 提供基本的数据存取。在主要的分析方案中,ADO 以最少的网络流量及最少层数 (介于前端及数据资源) 完成-它提供轻便、高性能接口。ADO 使用简单,因为它使用一个熟悉的隐喻-COM自动化接口,可从今日市场上所有领导的 Rapid Application Development (RAD) 工具、数据库工具、及语系中取得。

您可以在 Microsoft Developer Network Library EditionPlatform SDKDatabase 及 Messaging ServicesMicrosoft Data Access SDKMicrosoft ActiveX Data Objects (ADO)ADO 程序员的参考资料中找到 Microsoft ActiveX Data Objects 参考资料。

不过我的MSDN是在以下位置能找到ADO帮助:
MSDN Libeary Visual Studio 6.0平台SDK数据库和信息服务\Microsoft 数据访问 SDKMicrosoft ActiveX Data Objects

如果你还找到,可能是你的MSDN没有装全吧,重新安装一次,然后选全来就OK了


单个的文档用录制的宏能实现,如果要连续依次对多个文档写,对第二个文档写页脚时,运行到ActiveWindow就抱错,没有办法创建,不知道有什么好的解决方法?  
下面是录制的宏:  
Sub   Macro1()  
'  
'   Macro1   Macro  
'   宏在   2007-7-11   由   litao   录制  
'  
      If   ActiveWindow.View.SplitSpecial   <>   wdPaneNone   Then  
              ActiveWindow.Panes(2).Close  
      End   If  
      If   ActiveWindow.ActivePane.View.Type   =   wdNormalView   Or   ActiveWindow.   _  
              ActivePane.View.Type   =   wdOutlineView   Then  
              ActiveWindow.ActivePane.View.Type   =   wdPrintView  
      End   If  
      ActiveWindow.ActivePane.View.SeekView   =   wdSeekCurrentPageHeader  
      If   Selection.HeaderFooter.IsHeader   =   True   Then  
              ActiveWindow.ActivePane.View.SeekView   =   wdSeekCurrentPageFooter  
      Else  
              ActiveWindow.ActivePane.View.SeekView   =   wdSeekCurrentPageHeader  
      End   If  
      Selection.ParagraphFormat.Alignment   =   wdAlignParagraphRight  
      Selection.Fields.Add   Range:=Selection.Range,   Type:=wdFieldDate  
      ActiveWindow.ActivePane.View.SeekView   =   wdSeekMainDocument  
End   Sub  
在打印第二个文档的时候,运行到   ActiveWindow就提示“远程服务器不存在或不能使用”;请问怎么才能解决?

以后需再关注,现在先帮你顶一下


刚做VB不久,不知道该怎样弄,现在可以导出生成的WORD文档,第2页是空的,要插入目录。要生成目录的字符都给标题了式样,我在WORD了录下的宏为:
Public Sub Macro1()
    With ActiveDocument
        .TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _
            True, UseHeadingStyles:=True, UpperHeadingLevel:=1, _
            LowerHeadingLevel:=1, IncludePageNumbers:=True, AddedStyles:="", _
            UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
            True
        .TablesOfContents(1).TabLeader = wdTabLeaderDots
        .TablesOfContents.Format = wdIndexIndent
    End With
End Sub
直接调用没用,该怎么做?望各位朋友不吝赐教,谢谢!本人分数少见谅了!

vb没有做过,只能帮顶了.sorry


专题:

栏目: