吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 875|回复: 13
收起左侧

[求助] vb如何实现word实时统计文档内的图片数量

[复制链接]
wzs0777 发表于 2023-11-29 19:29
vb如何实现word实时统计文档内的图片数量到textbox1

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

约定的童话 发表于 2023-11-29 20:16
要实现在VB中实时统计Word文档内的图片数量并显示在TextBox1中,可以使用Microsoft.Office.Interop.Word库来访问和操作Word文档。下面是一种可能的实现方法:

首先,在VB项目中添加对Microsoft.Office.Interop.Word库的引用。在“引用”窗口中搜索并选中Microsoft.Office.Interop.Word,然后点击“确定”。

接下来,在VB代码中创建一个新的Word应用程序实例,并打开指定的Word文档:

```vb
Imports Microsoft.Office.Interop.Word

Public Class Form1
    Dim wordApp As New Application
    Dim wordDoc As Document

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        wordDoc = wordApp.Documents.Open("C:\path\to\your\document.docx")
    End Sub
End Class
```

然后,在需要统计图片数量的地方,使用`wordDoc.InlineShapes.Count`或`wordDoc.Shapes.Count`来获取Word文档中图片的数量,并将结果显示在TextBox1中:

```vb
Private Sub CountImages()
    Dim imgCount As Integer = wordDoc.InlineShapes.Count + wordDoc.Shapes.Count
    TextBox1.Text = imgCount.ToString()
End Sub
```

最后,可以在合适的事件中调用`CountImages`方法来实时更新图片数量的统计,例如在TextBox1的TextChanged事件中调用该方法:

```vb
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    CountImages()
End Sub
```

需要注意的是,在使用完Word应用程序和文档后,应关闭它们以释放资源:

```vb
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    wordDoc.Close()
    wordApp.Quit()
End Sub
```

这是一个简单的实现示例,实际应用中可能还需要处理一些异常情况以及对Word文档进行更复杂的操作。
mediacenter 发表于 2023-11-29 20:30
约定的童话 发表于 2023-11-29 20:16
要实现在VB中实时统计Word文档内的图片数量并显示在TextBox1中,可以使用Microsoft.Office.Interop.Word库 ...

有chatGPT的味道
doudouxiao 发表于 2023-11-29 20:40
[Asm] 纯文本查看 复制代码
Imports Word = Microsoft.Office.Interop.Word

Public Class Form1
    Dim wordApp As Word.Application
    Dim wordDoc As Word.Document

    Private Sub OpenDocumentButton_Click(sender As Object, e As EventArgs) Handles OpenDocumentButton.Click
        ' 打开Word文档
        OpenFileDialog1.Filter = "Word文档 (*.docx)|*.docx"
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            Dim filePath As String = OpenFileDialog1.FileName
            wordApp = New Word.Application()
            wordDoc = wordApp.Documents.Open(filePath)
            UpdateImageCount()
        End If
    End Sub

    Private Sub UpdateImageCount()
        ' 统计文档内图片数量
        Dim imageCount As Integer = 0

        For Each shape As Word.Shape In wordDoc.Shapes
            If shape.Type = Microsoft.Office.Core.MsoShapeType.msoPicture Then
                imageCount += 1
            End If
        Next

        ' 显示图片数量到TextBox1
        TextBox1.Text = imageCount.ToString()
    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        ' 关闭Word文档和应用程序
        If wordDoc IsNot Nothing Then
            wordDoc.Close()
        End If

        If wordApp IsNot Nothing Then
            wordApp.Quit()
        End If
    End Sub
End Class
用GPT写的你试一下
平淡最真 发表于 2023-11-29 21:07
doudouxiao 发表于 2023-11-29 20:40
[mw_shl_code=asm,true]Imports Word = Microsoft.Office.Interop.Word

Public Class Form1

https://www.52pojie.cn/thread-1729446-1-1.html
虽然吧,但是你有实际测试过能不能用吗
doudouxiao 发表于 2023-11-29 21:59
平淡最真 发表于 2023-11-29 21:07
https://www.52pojie.cn/thread-1729446-1-1.html
虽然吧,但是你有实际测试过能不能用吗

不好意思,前面那个帖子没看到!
MoreWindows123 发表于 2023-11-29 22:15
楼主说的功能,应该用到VBA而不是VB 可以试一试我用VBA写的代码
[Visual Basic] 纯文本查看 复制代码
Dim xInlines As Long
Dim xFloaters As Long
Dim sh As Shape
Dim tbxs As Long
Dim msg As String
With ActiveDocument
      For Each sh In .Shapes
          If sh.Type = msoTextBox Then tbxs = tbxs + 1
      Next
      xInlines = .InlineShapes.Count
      Floaters = .Shapes.Count - tbxs
End With
xPrompt = "内嵌图片:" & vbTab & xInlines & vbCr
xPrompt = xPrompt & "浮动形状有:" & vbTab & xFloaters & vbCr
xPrompt = xPrompt & vbTab & "总共:" & vbTab & (xInlines + xFloaters) & vbCr
xPrompt = xPrompt & "计数不包括页眉和页脚等。"
MsgBox xPrompt, vbInformation, "我的统计"

可以把xPrompt的数值赋给TextBox1控件的Text属性
 楼主| wzs0777 发表于 2023-11-30 08:24
MoreWindows123 发表于 2023-11-29 22:15
楼主说的功能,应该用到VBA而不是VB 可以试一试我用VBA写的代码
[mw_shl_code=vb,true]Dim xInlines As Lo ...

这个如何使用啊,没有sub啊
MoreWindows123 发表于 2023-12-1 09:53
wzs0777 发表于 2023-11-30 08:24
这个如何使用啊,没有sub啊

你需要在office选项里打开“开发工具”,创建一个宏,然后把代码复制过去。然后运行宏
 楼主| wzs0777 发表于 2023-12-1 18:12
MoreWindows123 发表于 2023-12-1 09:53
你需要在office选项里打开“开发工具”,创建一个宏,然后把代码复制过去。然后运行宏

我希望的是实时统计,类似于excel单元格内容变化时
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 18:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表