【问题标题】:is there a way i can copy the first characters of an excel filename and paste it in the worksheet?有没有办法可以复制excel文件名的第一个字符并将其粘贴到工作表中?
【发布时间】:2019-01-30 21:51:43
【问题描述】:

我想将我的 Excel 文件名的前 7 个字符复制到我的摘要表中的一列中。我的文件名通常类似于“PR_0001_nil_officer.xls”。我想复制“PR_0001”并将其粘贴到我的工作表的 G2:G6 列范围中。我对 VBA 也很陌生,所以这让这个看似简单的任务对我来说更复杂了哈哈

【问题讨论】:

标签: excel vba


【解决方案1】:
  • 使用ThisWorkbook.Name 获取工作簿名称。
  • 使用 Left function 获取该名称的左 7 个字符
  • 将其写入所需工作表中的范围

    ThisWorkbook.Worksheet("Summary").Range("G2:G6").Value = Left$(ThisWorkbook.Name, 7)
    

【讨论】:

  • $ 返回一个字符串值:)
  • @JvdV 实际上是的,但是 Excel 是如此的转储,以至于如果 Left$ 的结果实际上是像 0123456 这样的数字,它会自动将字符串 Left$("0123456AAAA", 7) 转换回一个数字,即使我使用Left$。因此,在这种情况下,单元格值无论如何都会是数字 123456 :( 并且 $ 对单元格没有影响。
  • @Peh,有趣!那么ThisWorkbook.Worksheet("Summary").Range("G2:G6").Value = CStr(Left$(ThisWorkbook.Name, 7)) 会起作用吗?
  • @JvdV 显然不是。 Excel 还会将此字符串转换为数字。 .Text 也不适用于多单元格范围,因此唯一的解决方案是在插入值之前 Range("G2:G6").NumberFormat = "@"。否则数字作为字符串总是自动转换成数字。
  • @Peh,无赖!我想在这种情况下,人们也可以求助于"'"tactics。 ThisWorkbook.Worksheet("Summary").Range("G2:G6").Value = "'" & Left$(ThisWorkbook.Name, 7)
【解决方案2】:
Option Explicit

Sub Test()

    Dim strName As String
    Dim wsSummary As Worksheet

    With ThisWorkbook

        Set wsSummary = .Worksheets("Summary")

        strName = Left(.Name, 7)

        wsSummary.Range("G2:G6").Value = strName

    End With

End Sub

【讨论】:

  • 很高兴听到这个消息。
  • @Mayokun,如果您觉得您的问题已得到解答,请标记为这样!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多