复制值而不是公式,但保持前导零

时间:2019-08-29 19:00:19

标签: excel vba

我想从一本已关闭的书中复制一个工作表(正常工作),我想将唯一的值而不是公式复制到我的活动工作簿中,这样当我将工作簿另存为.csv时,不会出现逗号行( ,,,),因为原始工作表中的单元格中包含公式或其他内容。

我尝试过:

Set sourceBook = Workbooks.Open(fileName)

  sourceBook.Sheets("Access Request Spreadsheet").value.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).value
  sourceBook.Close`

但这会引发错误。 复制范围可能总是不同的...但是有一种简单的方法可以只复制值,或者当我另存为.csv来剥离行时 、、、、、 、、、、 、、、、 、、、

谢谢!

---更新----

好吧,我能够删除副本中的公式,现在,当我另存为.csv时,它末尾没有多余的行。 问题

现在它正在从一栏中的数字中删除前导零。数字的长度可能不一致,因此不能设置为“ 0000000”。

我的代码是:

 Set sourceBook = Workbooks.Open(fileName)
 With ThisWorkbook
    .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
  End With

  With sourceBook.Sheets("Access Request Spreadsheet").UsedRange
 ThisWorkbook.Sheets("temp").Range("A1").Resize( _
    .Rows.Count, .Columns.Count) = .value
 End With
sourceBook.Close

我已经尝试过.value.NumberFormat = "@" 有什么想法吗?

我的输出截断了我的学生证,应该是

001234

05432

1284

收件人:

1234

5432

1284

如上所述,问题在于不同的学校具有不同的ID字段长度,因此无法将其设置为预定义的长度。

复制到新工作表并删除公式时,可以将值保留为文本吗?

我尝试过:

  With sourceBook.Sheets("Access Request Spreadsheet").UsedRange

  ThisWorkbook.Sheets("temp").Range("A1").Resize( _
        .Rows.Count, .Columns.Count) = .value.NumberFormat = "@"
  End With

但是会引发错误:(

干杯!

1 个答案:

答案 0 :(得分:0)

只需分别执行[1]格式化和[2]复制。 1 -> A 2 -> B 3 -> C .. 25 -> Y 26 -> Z 27 -> AA 28 -> AB 29 -> AC .. 不是有效的VBA语法;您必须先定义目标范围的数字格式:-)

.value.NumberFormat = "@"
相关问题