Forum Discussion
Freeze Panes issue with Power Query
Hi all,
I have an excel spreadsheet report that has by default when generated freeze panes enabled to ensure the column headers are always visible. This said, having freeze panes enabled in the file seems to interfere with Power Query being able to correctly select the header row when I try to import data from this file, Power Query seems to only see the row directly below the row that freeze panes has been enabled on and truncates the rest of the report.
I am aware I can open the report and disable freeze panes, or turn the range into a table to correct this, but ideally I want to be able to just save the report into a folder and not have to open and edit it at all.
Thanks in advance!
D
- Anonymous6 years ago
It would be rather easy to write a VBA macro (or even a script in PowerShell or Python) that would go through all Excel files in a folder, silently open them without even showing the file on the screen, change the setting on every sheet and then save them. No manual work required and very quick. Excel is an automation OLE server, so you can automate it from almost anything... All you need is to import the Excel object library which can be found on every computer with Excel.
Best
D
10 Replies
- MariuszCommunity Champion
Hi DannyMcMate
Just tested it and seems fine on my end.
Best Regards,
Mariusz
If this post helps, then please consider Accepting it as the solution.
Please feel free to connect with me.
LinkedIn- DannyMcMateFrequent Visitor
Hi Mariusz
Thank you for trying to replicate this. I think it must be something to do with the generation of the file as here is what I get when I link to it without disabling freeze panes first. The column headers are ignored, and only the first row of data is shown (the report has 20k rows in it). If I disable freeze panes and try again it's fine, headers recognised and all rows included. Unfortunately I can't share the files as it contains senstive info. Any thoughts?
- MariuszCommunity Champion
Hi DannyMcMate
Try to mark this table as Table in Excel
Best Regards,
Mariusz
If this post helps, then please consider Accepting it as the solution.
Please feel free to connect with me.
LinkedIn
- AnonymousNot applicable
It would be rather easy to write a VBA macro (or even a script in PowerShell or Python) that would go through all Excel files in a folder, silently open them without even showing the file on the screen, change the setting on every sheet and then save them. No manual work required and very quick. Excel is an automation OLE server, so you can automate it from almost anything... All you need is to import the Excel object library which can be found on every computer with Excel.
Best
D - cscheeserNew Member
hi I see same issue as of 7/2023. what is plan to fix, what is workaround?
- DannyMcMateFrequent Visitor
Hi, the workaround I went with was to set up a macro that I could point at a folder containing my reports which would format the data in them as an Excel Table which I could then retrieve with PowerQuery.
This is the Sub I use:Sub Select_Reports_Folder()
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String'Macro optimisation settings
Application.Calculation = xlManual
Application.ScreenUpdating = False'Retrieve reports folder path
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select Reports Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo ResetSettings
myPath = .SelectedItems(1)
End With'Target file extension (must include wildcard "*")
myExtension = "*.xls*"'Target path with ending extention
myFile = Dir(myPath & "\" & myExtension)'Loop through each Excel file in folder
Do While myFile <> ""'Set variable equal to opened workbook
Set wb = Workbooks.Open(Filename:=myPath & "\" & myFile)
'Formatting changes
wb.Sheets(1).Select
If Range("A1").CurrentRegion.ListObject Is Nothing Then
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = "Table1"
wb.Close SaveChanges:=True
Else
wb.Close SaveChanges:=False
End If
'Get next file name
myFile = Dir
Loop'Message box when tasks are completed
MsgBox "Task Complete"'Reset macro optimisation settings
ResetSettings:
Application.Calculation = xlAutomatic
Application.ScreenUpdating = TrueEnd Sub