使用VBA根据设定的字符数分割string

我已经使用了VBA了大约一年,现在仍然在学习它可以做什么。 我有一个csv文件需要改变数据安排导入到一个软件。 到目前为止,我一直很好。 但显然有一个特定的列被导入正在成为一个问题。

该软件仅导入列中数据的前15个字符。 我正在与之合作的人员希望将数据拆分,其中前15个字符在相应列中,而在第二个字段中溢出。 我做了一些研究,只提出了两个select。 使用文本列function或使用分割stringfunction。 我看到与拆分string的问题是,我需要一个分隔符,但我需要使用的事实,我必须拆分字符15和16之间,因为没有在每个数据点重复定界符。 这留给我的文字列允许固定的宽度。 但是我遇到了另外一个问题。 char 16可能是一个空间。 我testing运行文本列char 16空间和函数删除空格,这是导入所必需的。

我很茫然。 有没有办法在字符15和16之间拆分string,并保留字符16处的空格?

VBA编码在Excel 2007工作簿中。

为了展示一些代码,并不是说它对我目前的情况有很大的影响。

Dim i As Integer i = 1 ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count) 'Insert headers Sheets(2).Cells(1, 1).Value = "Company" Sheets(2).Cells(1, 2).Value = "Division" Sheets(2).Cells(1, 3).Value = "Style" Sheets(2).Cells(1, 4).Value = "Label" Do While Sheets(1).Cells(i, 1) <> "" 'Insert data Sheets(2).Cells(i + 1, 1).Value = "LP" Sheets(2).Cells(i + 1, 2).Value = Sheets(1).Cells(i, 3).Value Sheets(2).Cells(i + 1, 3).Value = Sheets(1).Cells(i, 30).Value 'Needs first 15 char 'Sheets(2).Cells(i + 1, 4).Value = 'currently blank 'Needs char 16 and beyond i= i + 1 Loop 

你可以试试Midfunction

 Dim i As Integer i = 1 ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count) 'Insert headers Sheets(2).Cells(1, 1).Value = "Company" Sheets(2).Cells(1, 2).Value = "Division" Sheets(2).Cells(1, 3).Value = "Style" Sheets(2).Cells(1, 4).Value = "Label" Do While Sheets(1).Cells(i, 1) <> "" 'Insert data Sheets(2).Cells(i + 1, 1).Value = "LP" Sheets(2).Cells(i + 1, 2).Value = Sheets(1).Cells(i, 3).Value Sheets(2).Cells(i + 1, 3).Value = Mid(Sheets(1).Cells(i, 30).Value, 1, 15) 'Needs first 15 char Sheets(2).Cells(i + 1, 4).Value = Mid(Sheets(1).Cells(i, 30).Value, 16) 'currently blank 'Needs char 16 and beyond i= i + 1 Loop