VBA提取指定区间的数据

Sub OptionalFeatureLicense()

    Dim Fs As Object, Ft As Object, S As String
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set d = CreateObject("scripting.dictionary")
    filePath = ThisWorkbook.Path & "\data\"
    fileName = Dir(filePath & "*.log", vbNormal)
    Worksheets("OptionalFeatureLicense").Cells.Clear
    Worksheets("OptionalFeatureLicense").Range("A1:F1") = Array("ENBIP", "MO", "OptionalFeatureLicenseId", "featureState", "licenseState", "keyId")
   ' n = 1
    X = 0
    Do While fileName <> ""
      Set Fs = CreateObject("Scripting.FileSystemObject")
      Set Ft = Fs.opentextfile(filePath & fileName)
       Do
        texTline = Ft.ReadLinE
        If InStr(1, texTline, "MO ") > 0 And InStr(1, texTline, "OptionalFeatureLicense=") > 0 Then
          
            X = X + 1
           ' n = n + 1
            STRN = Split(Application.Trim(texTline), " ")
             Count = UBound(STRN)
             'Worksheets("SHEET1").Cells(n, 1) = fileName
             'Worksheets("SHEET1").Cells(n, X + 1) = STRN(1)
             d.Add "ENBIP", fileName
             d.Add STRN(0), STRN(1)
             
             texTline = Ft.ReadLinE
         
               Do
               
               If InStr(1, texTline, "==") > 0 Then
                 texTline = Ft.ReadLinE
                 Else:
                   
                   STRN = Split(Application.Trim(texTline), " ")
                   Count = UBound(STRN)
                   If Count >= 1 Then
                     For J = 1 To Count
                      S = S & " " & STRN(J)
                     Next
                     d.Add STRN(0), S
                     'X = X + 1
                     'Worksheets("SHEET1").Cells(n, X + 1) = S
                     S = ""
                    End If
                  texTline = Ft.ReadLinE
                End If
                
                Loop Until InStr(1, texTline, "==") > 0
          
        End If
        If d.Count > 0 Then
          'For K = 0 To d.Count - 1
           'Worksheets("SHEET1").(X+1,K) = Application.Transpose(d.keys)
          ' L1 = d.KEYS
           'L2 = d.ITEMS
           'Worksheets("sheet1").Cells(X, 1 + K) = L1(K)
           'Worksheets("sheet1").Cells(X, 1 + K) = L2(K)
           'Next
           For K = 1 To Application.CountA(Worksheets("featureState").Rows(1))
             o = Worksheets("OptionalFeatureLicense").Cells(1, K)
             L1 = d.KEYS
             L2 = d.ITEMS
             Worksheets("OptionalFeatureLicense").Cells(X + 1, K) = d(o)
           Next
         End If
        d.RemoveAll
        
        'X = 0
        'Loop Until InStr(1, texTline, ">>> Total") > 0
        Loop Until Ft.atendofstream 'Ft.atendofline 'Ft.AtEndOfLine
       Set Fs = Nothing
       Set Ft = Nothing
       Close #1
       fileName = Dir
     Loop
 MsgBox ("已完筛选、合并操作!")
End Sub
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VBA是Visual Basic for Applications的简称,它是一种编程语言,可以用于在Excel中自动化执行各种任务。通过使用VBA,可以实现从Excel中提取数据并自动生成Word文档的功能。 要通过VBA提取Excel数据并生成Word文档,可以按照以下步骤进行操作: 1. 打开Excel文件,选择包含要提取数据的工作表。 2. 在Excel中创建一个VBA宏。可以通过按下Alt+F11键打开VBA编辑器,并在项目资源管理器中双击“Sheet1”(或包含数据的工作表)。 3. 在VBA编辑器中编写代码来提取Excel数据。可以使用循环语句来遍历所需的数据范围,并将数据存储在变量中。 4. 创建一个新的Word文档。可以使用`Documents.Add`方法创建一个新的文档对象。 5. 使用VBA代码将Excel数据写入Word文档。可以使用`Selection`对象或`Range`对象来粘贴数据到Word文档中的特定位置。 6. 格式化Word文档。可以使用VBA代码来设置字体、段落格式、表格等。例如,可以使用`Font`对象设置文本的字体和大小,并使用`ParagraphFormat`对象设置文本的对齐方式和行间距。 7. 保存并关闭Word文档。可以使用`SaveAs`方法将文档保存为指定的文件名和路径,并使用`Close`方法关闭文档。 8. 在VBA编辑器中运行宏。可以按下F5键或通过在Excel中分配一个快捷键来运行宏。 通过以上步骤,就可以利用VBA提取Excel数据并自动生成Word文档。这样可以方便快捷地将Excel中的数据转移到Word,节省了手动操作的时间和劳动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_44390640

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值