Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Duuuudes:
Is there an easy way in vba to convert a string to an array of integers. For example: I have this particular array of numbers in the element <column_data_types in a xml file: <column_data_types1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1</column_data_types I have a function that will grab the array of numbers but the function returns a string. ("1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1") For this particular situation I actually need this list of numbers to be numbers, not a string, and pass them to an array in excel. Below is the situation that I'm talking about, I am importing a query from a database and need to fill out the .TextFileColumnDataTypes argument which takes an array of integers. I need this to be dynamic so I put these columndatatypes in an xml file. With WorkSheet("x").QueryTables.Add(Connection:="TEXT;" & ExcelFilePath & "\FABRICREQ", Destination:=Range("FD_StartData")) .Name = "FabricData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Instead of looking like the above: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) it will look like this: .TextFileColumnDataTypes = Array(getXmlValue) except getXmlValue returns a string which is the problem. Any ideas on how I should handle this? Any help would be appreciated. Thanks |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Looks like the Split function is what you're looking for. Split will take a
string and delimiter as input and return an array. Search for "Split Function" in the Microsoft Visual Basic Help. -- Hope that helps. Vergel Adriano "DeathSurfer" wrote: Duuuudes: Is there an easy way in vba to convert a string to an array of integers. For example: I have this particular array of numbers in the element <column_data_types in a xml file: <column_data_types1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1</column_data_types I have a function that will grab the array of numbers but the function returns a string. ("1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1") For this particular situation I actually need this list of numbers to be numbers, not a string, and pass them to an array in excel. Below is the situation that I'm talking about, I am importing a query from a database and need to fill out the .TextFileColumnDataTypes argument which takes an array of integers. I need this to be dynamic so I put these columndatatypes in an xml file. With WorkSheet("x").QueryTables.Add(Connection:="TEXT;" & ExcelFilePath & "\FABRICREQ", Destination:=Range("FD_StartData")) .Name = "FabricData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Instead of looking like the above: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) it will look like this: .TextFileColumnDataTypes = Array(getXmlValue) except getXmlValue returns a string which is the problem. Any ideas on how I should handle this? Any help would be appreciated. Thanks |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
From what I can tell the split function returns the array in a string unless
I'm doing something wrong. This is what I done: ..TextFileColumnDataTypes = Array(Split (getXmlValue, ",", 1,)) The above returned this: "1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1" the numbers are in a string again. The function will not accept this. I'm I doing something wrong? "Vergel Adriano" wrote: Looks like the Split function is what you're looking for. Split will take a string and delimiter as input and return an array. Search for "Split Function" in the Microsoft Visual Basic Help. -- Hope that helps. Vergel Adriano "DeathSurfer" wrote: Duuuudes: Is there an easy way in vba to convert a string to an array of integers. For example: I have this particular array of numbers in the element <column_data_types in a xml file: <column_data_types1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1</column_data_types I have a function that will grab the array of numbers but the function returns a string. ("1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1") For this particular situation I actually need this list of numbers to be numbers, not a string, and pass them to an array in excel. Below is the situation that I'm talking about, I am importing a query from a database and need to fill out the .TextFileColumnDataTypes argument which takes an array of integers. I need this to be dynamic so I put these columndatatypes in an xml file. With WorkSheet("x").QueryTables.Add(Connection:="TEXT;" & ExcelFilePath & "\FABRICREQ", Destination:=Range("FD_StartData")) .Name = "FabricData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Instead of looking like the above: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) it will look like this: .TextFileColumnDataTypes = Array(getXmlValue) except getXmlValue returns a string which is the problem. Any ideas on how I should handle this? Any help would be appreciated. Thanks |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
The Split function already returns an array. Try it this way: ..TextFileColumnDataTypes = Split (getXmlValue, ",", 1,) Hopefully, Excel would be able to do the data conversion automatically. If that still gives you problems, then, you can take the output from Split and put the values in an integer array.. here's an example: Sub test() Dim strarray As Variant Dim iarray() As Integer Dim i As Integer strarray = Split("1,1,2", ",") ReDim iarray(UBound(strarray)) For i = 0 To UBound(strarray) iarray(i) = strarray(i) Next i End Sub In the above code, strarray will be an array of string values ("1", "1", "2"). iarray will have integer values (1, 1, 2) -- Hope that helps. Vergel Adriano "DeathSurfer" wrote: From what I can tell the split function returns the array in a string unless I'm doing something wrong. This is what I done: .TextFileColumnDataTypes = Array(Split (getXmlValue, ",", 1,)) The above returned this: "1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1" the numbers are in a string again. The function will not accept this. I'm I doing something wrong? "Vergel Adriano" wrote: Looks like the Split function is what you're looking for. Split will take a string and delimiter as input and return an array. Search for "Split Function" in the Microsoft Visual Basic Help. -- Hope that helps. Vergel Adriano "DeathSurfer" wrote: Duuuudes: Is there an easy way in vba to convert a string to an array of integers. For example: I have this particular array of numbers in the element <column_data_types in a xml file: <column_data_types1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1</column_data_types I have a function that will grab the array of numbers but the function returns a string. ("1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1") For this particular situation I actually need this list of numbers to be numbers, not a string, and pass them to an array in excel. Below is the situation that I'm talking about, I am importing a query from a database and need to fill out the .TextFileColumnDataTypes argument which takes an array of integers. I need this to be dynamic so I put these columndatatypes in an xml file. With WorkSheet("x").QueryTables.Add(Connection:="TEXT;" & ExcelFilePath & "\FABRICREQ", Destination:=Range("FD_StartData")) .Name = "FabricData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Instead of looking like the above: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) it will look like this: .TextFileColumnDataTypes = Array(getXmlValue) except getXmlValue returns a string which is the problem. Any ideas on how I should handle this? Any help would be appreciated. Thanks |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Duuude:
That works, sorry you had to hold my hand through that. later. "DeathSurfer" wrote: Duuuudes: Is there an easy way in vba to convert a string to an array of integers. For example: I have this particular array of numbers in the element <column_data_types in a xml file: <column_data_types1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1</column_data_types I have a function that will grab the array of numbers but the function returns a string. ("1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1") For this particular situation I actually need this list of numbers to be numbers, not a string, and pass them to an array in excel. Below is the situation that I'm talking about, I am importing a query from a database and need to fill out the .TextFileColumnDataTypes argument which takes an array of integers. I need this to be dynamic so I put these columndatatypes in an xml file. With WorkSheet("x").QueryTables.Add(Connection:="TEXT;" & ExcelFilePath & "\FABRICREQ", Destination:=Range("FD_StartData")) .Name = "FabricData" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Instead of looking like the above: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 1, 1, 1) it will look like this: .TextFileColumnDataTypes = Array(getXmlValue) except getXmlValue returns a string which is the problem. Any ideas on how I should handle this? Any help would be appreciated. Thanks |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Stop Excel from converting integers into decimals (eg.; 12 to .12) | Excel Discussion (Misc queries) | |||
Stop Excel from converting integers into decimals? | Setting up and Configuration of Excel | |||
Populating an array from a integers values column rows | Excel Programming | |||
Extracting integers from a text string. | Excel Worksheet Functions | |||
converting to Integers | Excel Worksheet Functions |