2016-04-27 90 views
0

我对MSOffice如何处理数字格式存在挑战。

虽然我相信这是类似的根本原因:Stop Excel from automatically converting certain text values to dates

这是不同的,因为这不是一个日期格式,这涉及到Excel和PowerPoint中使用VBA。

我有一些数据是从dB跳出到CSV文件中的,我正在对PPT模板中的某些文本标记(例如@@ ReplaceText @@)执行.Replace。 (有一个很好的职位上如何做到这一点的网站上,我似乎无法立即找到)

有一个领域我需要处理与被跟踪的度量标准,这个字段是文字在我的分贝,但它可以包含特殊字符 - 特别是$和%。

例如我可以在CSV文件中看到以下值: “增加市场份额”,“1234”,“10美元”,“28%”

我希望VBA将此全部视为文本,所以%和$字符维护...但是... Excel将数据作为数字读取并保留$或%符号。 PowerPoint删除$或%符号并将28%转换为0.28和10到10。

根据上述问题,将Excel78中的.csv添加"=""28%"""将使我在PowerPoint中看到精确的文本文本。

添加前面的space'字符在强制Excel读取数据作为文本字符串。但是PowerPoint忽略它并且行为与上述相同。例如28%到0.28。

我试着用如下的格式,但由于该数据是可变的,我不知道要应用的情况下。

sCurrentText = Format(sCurrentText, "$#")sCurrentText = Format(sCurrentText, "0.0%")

如果语句不工作,因为$或%中不存在的VBA看到的东西(如$或%字符已经消失)

If sCurrentText Like "*$*" ThenIf sCurrentText Like "*%" Then

所以我的问题是我怎么逼VBA采取什么是CSV文件为文本,而忽略处理$或%为特殊字符,只是维持他们在CSV?

+0

我已经扩展我的原始问题,以提供更多的细节问题,以便如何通过PowerPoint和Excel处理这些字符($和%)。 –

回答

0

你没有指定要在CSV文件中的数据做什么,但我认为你试图打开VBA文件。

如果打开使用OpenText公司(如下)的CSV文件,然后Excel将自动解析格式的数据它认为合适的。例如:

Workbooks.OpenText fileName:="directory", DataType:=xlDelimited, Comma:=True 

你可以用不同的方法来打开,如果你想VBA来处理数据作为您认为合适的,你可以只使用文本的CSV文件。

Sub OpenCSVFile() 
Dim ff As Long, iRow As Long, iCol As Long 
Dim FilePath As String 
Dim FileBuffer As String   'Entire CSV file as one string 
Dim LineSeparatedFile() As String 'Array of data separated into lines 
Dim LineData() As String   'Array of comma separated values for that line 

ff = FreeFile 
Open FilePath For Binary Access Read As #ff 
FileBuffer = Space$(LOF(ff)) 
Get #ff, , FileBuffer 
Close #ff 
LineSeparatedFile = Split(txtBuffer, vbCrLf) 

For iRow = 0 To UBound(LineSeparatedFile) 
    LineData = Split(LineSeparatedFile(i), ",") 
    For iCol = 0 To UBound(LineData) 
     'Code to do something with each entry. 
     'Eg. print to cell as text 
     ThisWorkbook.Sheets(1).Cells(iRow + 1, iCol + 1).NumberFormat = "@" 
     ThisWorkbook.Sheets(1).Cells(iRow + 1, iCol + 1).Value = LineData(iCol) 
    Next iCol 
Next iRow 
End Sub 
+0

这是一个很好的实用工具,它将数据作为文本存储在Excel中。 但是,正如上面在我更正的问题中所述,PowerPoint处理此差异并忽略Excel接受的“读为文本”标记。 –