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

Excel 复制值而不是公式,但保留前导零,excel,vba,Excel,Vba,我想从封闭的工作簿复制工作表(正常工作)我想将唯一的值而不是公式复制到活动工作簿中,这样当我将工作簿另存为.csv时,由于原始工作表的单元格中有公式或其他内容,所以在结尾处不会出现逗号(,,,)行 我试过: Set sourceBook = Workbooks.Open(fileName) sourceBook.Sheets("Access Request Spreadsheet").value.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sh

我想从封闭的工作簿复制工作表(正常工作)我想将唯一的值而不是公式复制到活动工作簿中,这样当我将工作簿另存为.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=“@”
有什么想法吗

我的输出正在截断我的学生ID,应该是

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]格式化和[2]复制。
.value.NumberFormat=“@”
不是有效的VBA语法;您必须首先定义目标范围的数字格式:-)


您可以尝试使用ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)进行
。Value=.Value以
结束,谢谢您的帮助!现在我面临的一个问题是,复制值只是对前导零进行条带化。是否有一种方法可以将值或作为文本复制,并保留前导零,而不让cvs将公式视为nul或、、或?(我编辑了上面的帖子来帮助说明我的意思。)您好@T.M.谢谢您,但是将.NumberFromat=“@”放在.value前面确实有效,并通过转换为文本来保留前导零,但我认为我回到了原来的问题,即公式在保存为.csv时被视为空,因此我剩下的行是:(逗号)这就是.value试图只复制值的原因,但它会去掉前导零。所以,我只想复制值并转换为文本…看起来文本首先会导致问题。至少当我通过调试器时看起来是这样的。感谢您建议给出一些源列和目标列的示例数据(例如A:B列),并描述您在源数据中的公式所在位置。-@80年代
' [1] format as text  
  ThisWorkbook.Worksheets("temp").Range("A1").Resize( _
        .Rows.Count, .Columns.Count).NumberFormat = "@"
' [2] copy values
  ThisWorkbook.Worksheets("temp").Range("A1").Resize( _
        .Rows.Count, .Columns.Count) = .Value