PDA

View Full Version : VBA - Flat Text Import Changes



garak0410
01-18-2023, 08:00 AM
We have a mission critical spreadsheet that imports a lot of flat text from a desgin program and then brings it in to this spreadsheet.
We recently updated the design software, which we do once a year and have done so in my 12 years here. This year, they made a change to a file where it placed the header of a column of text in a different place. Now, our program will not import it correctly. It is the PART column...
Old text file:

30446

New Text File:
30447


So as you can see, they moved PART to the lower left.
Not being an expert in VBA, I am struggling to find exactly where I need to modify the code to bring it in properly..
This is the section of VBA code where I do think the selections are made but nothing specifies PART in the code...perhaps it is part of the Array? The file is called CZE_DET.OUT.

SubIMPORT_CZEOUT()
Dim aryJobs() As String
Dim strComb As String
Dim strDir As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Sheets("CEE ORDER").Visible = True
Sheets("CZE_DET").Visible = True
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("CEE ORDER").Select
For i = 1 To colAllBuildings.Count
strDir = Dir$(colAllBuildings.Item(i) & "\CZE_DET.OUT")
If strDir <> "" Then
Workbooks.OpenText Filename:=colAllBuildings.Item(i) & "\CZE_DET.OUT", Origin:=xlWindows, _
StartRow:=7, DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 9), Array(5, 1), Array(9, 9), Array(10, 1), _
Array(13, 9), Array(14, 1), Array(15, 9), Array(16, 1), Array(18, 1), _
Array(28, 9), Array(35, 9), Array(47, 9), Array(54, 1), Array(57, 1), _
Array(62, 1), Array(67, 1), Array(72, 1))
Range("A1:L" & CStr(Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row)).Select
Selection.Copy
Windows(strShipperName).Activate ' This line does not work, for NO reason!
' Windows(1).ActivatePrevious
Sheets("CZE_DET").Select
Range("A1").Select
If Range("A1").Value <> "" Then
ActiveSheet.Range("A65536").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
End If
Selection.PasteSpecial Paste:=xlValues
Selection.Sort Key1:=Range("A12"), Order1:=xlAscending, Orientation:=xlTopToBottom
Windows("CZE_DET.OUT").Activate
ActiveWindow.Close
End If
Next

Any suggestions?

Bob Phillips
01-18-2023, 09:54 AM
Can you post an example workbook and text file?

garak0410
01-18-2023, 10:22 AM
Can you post an example workbook and text file?

There are the old and newer CZE_DET.OUT files... https://pinnaclestructures365-my.sharepoint.com/:f:/g/personal/bwolters_pinnaclestructures_com/EpGrxtGx4_BCgL4nl3QDZxcBalaRSL52pI0S8UNX0n6kOg?e=0oyh2k

The workbook may be harder to post as it attaches an XLA file with the bulk of the VBA code to it from a network share...and the XLA file is protected by a password...so may save it as a different file/name.

garak0410
01-18-2023, 10:41 AM
There are the old and newer CZE_DET.OUT files... https://pinnaclestructures365-my.sharepoint.com/:f:/g/personal/bwolters_pinnaclestructures_com/EpGrxtGx4_BCgL4nl3QDZxcBalaRSL52pI0S8UNX0n6kOg?e=0oyh2k

The workbook may be harder to post as it attaches an XLA file with the bulk of the VBA code to it from a network share...and the XLA file is protected by a password...so may save it as a different file/name.

I tried to remove the password from the XLA file and it wouldn't let me...so I can post modules if needed.

Artik
01-18-2023, 05:20 PM
From the analysis of the presented code snippet, it seems that the problem should not lie in the CZE_DET.OUT files. The import of the old version as well as the new one runs correctly. The "Part" header is irrelevant here, since the data from the CZE_DET.OUT files are taken from line No. 7, i.e. the header is omitted.
In the presented code, the following is highlighted:
Windows(strShipperName).Activate ' This line does not work, for NO reason!If, in fact, an error arises on this line then there are two possibilities: either there is no workbook whose name is stored in the strShipperName variable or this workbook is not open. The second possibility is that the window name is not assigned to the strShipperName variable. We should infer that this assignment is in another procedure, which unfortunately we do not see, just as we do not see the assignment to the colAllBuildings collection. Without knowing the rest of the code, it is difficult to answer what should be corrected in the code.

Artik