Power Query神操作!讓 Excel 自動完成數(shù)據(jù)更新

要想實現(xiàn)這個效果,我們得用上 VBA。
2、交互式獲取路徑
首先我們先新建一個參數(shù)看看,里面的 M 函數(shù)是怎么寫的。
由于這里是讓用戶自行選擇路徑,所以參數(shù)的類型選文本就可以。
接著,來看一下該參數(shù)對應(yīng)的 M 函數(shù)是怎么寫的。
選擇查詢 【路徑】,單擊【高級編輯器】。
從圖中可以看到,參數(shù)對應(yīng) M 語言如下 :
"C:\Users\80522\Desktop\小爽鴨xlsx" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]
通過觀察,我們可以構(gòu)造出如下形式。
路徑 + "meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]"
那么下面,就是利用 VBA 執(zhí)行新建路徑參數(shù)的操作。
主要有如下思路 :
通過 FileDialog 對象,讓用戶選擇指定的文件,將獲取到的路徑字符串,進行構(gòu)造路徑參數(shù)的 M 函數(shù)公式,利用 VBA 添加 PQ 查詢(Add 方法),讓代碼執(zhí)行 在 PQ 編輯器中新建 以 M 函數(shù)公式的路徑參數(shù)的查詢。如果路徑參數(shù)查詢已經(jīng)存在則先刪除。
新建一個模塊,輸入我按照思路編寫的 VBA 代碼。
Sub 選擇參數(shù)() Dim dig, path Set dig = Application.FileDialog(msoFileDialogFilePicker) With dig .Filters.Add "Excel 文件", "*.xls*", 1 .InitialFileName = ThisWorkbook.FullName If .Show <> 0 Then path = dig.SelectedItems(1) On Error Resume Next ThisWorkbook.Queries("路徑").Delete ThisWorkbook.Queries.Add Name:="路徑", Formula:= _ """" & path & """" & " meta [IsParameterQuery=true, Type=""Text"", IsParameterQueryRequired=true]" ThisWorkbook.Queries("路徑").Refresh End If End With End Sub
最后,我們插入一個圖片,指定一下上述宏代碼。
單擊【圖片】,鼠標(biāo)右鍵,選擇【指定宏】,位置【當(dāng)前工作簿】,【選擇參數(shù)】,單擊【確定】按鈕。
3、效果展示
現(xiàn)在,我們來做一個測試,案例中我已經(jīng)事先導(dǎo)入測試文件夾中小爽鴨的 Excel 文件,文件路徑都引用了路徑參數(shù)(此時數(shù)據(jù)源路徑是存在的)。
然后,我把「測試」文件夾中的「小爽鴨」文件移到「路徑變了」文件夾中。小爽鴨工作簿位置發(fā)生改變。
這時,更新一下數(shù)據(jù)源后,我們可以看到,錯誤信息中顯示【未找到文件】。
接著,我們單擊一下圖片,執(zhí)行宏操作,選擇移動后的文件,確定。
這時候,就看到查詢中的鏈接沒有提示錯誤了。同時,路徑的參數(shù)也改成我們剛剛所選擇的文件路徑。
到這里,大家 get 到了嘛?
本文可能有點難度,不過比較實用。目前還沒完全懂的小伙伴可以先收藏。
4、寫在最后
因為我們知道 PowerQuery 引用外部文件,是個絕對路徑,不是相對路徑。
所以我們就想到把路徑作為一個參數(shù),引用到查詢中,于是就有了新建參數(shù)的想法。
但是,還是不方便。這時我們就開始思考:對于不會使用 PowerQuery 更改路徑的小伙伴,能不能通過外部自己選擇路徑呢? 于是就有了 VBA 代碼的想法。
因為使用到 VBA,所以文件后綴名,小伙伴們記得保存為 xlsm 格式!
這就是本篇文章的整體思路。
對了,本文使用版本是 Office 365 最新版本,不同版本的提示可能有些不一樣,大家也注意一下哦。
相關(guān)文章
Excel2021怎么把數(shù)據(jù)由列轉(zhuǎn)化為行?Excel2021將列轉(zhuǎn)為行的方法
Excel2021怎么把數(shù)據(jù)由列轉(zhuǎn)化為行?這篇文章主要介紹了Excel2021將列轉(zhuǎn)為行的方法,需要的朋友可以參考下2022-06-20xml格式文件怎么導(dǎo)入到excel?Excel表格將XML文件導(dǎo)入的操作教程
這篇文章主要介紹了xml格式文件怎么導(dǎo)入到excel?Excel表格將XML文件導(dǎo)入的操作教程的相關(guān)資料,需要的朋友可以參考下本文詳細(xì)內(nèi)容介紹2022-07-06excel如何在多張工作表相同位置錄入相同的數(shù)據(jù) excel多張工作表錄入相
實務(wù)工作中我們有時候需要在excel中,在多個工作表的同一個位置輸入相同的內(nèi)容。這種情況如何操作效率更高呢?一起來了解一下吧2022-07-07excel突出重復(fù)值怎么操作?excel中突出顯示重復(fù)值操作方式
這篇文章主要介紹了excel突出重復(fù)值怎么操作?excel中突出顯示重復(fù)值操作方式的相關(guān)資料,需要的朋友可以參考下本文詳細(xì)內(nèi)容介紹2022-07-12Excel如何實現(xiàn)下拉菜單自動關(guān)聯(lián)數(shù)據(jù)?excel下拉菜單自動關(guān)聯(lián)數(shù)據(jù)的方法
這篇文章主要介紹了Excel如何實現(xiàn)下拉菜單自動關(guān)聯(lián)數(shù)據(jù)?excel下拉菜單自動關(guān)聯(lián)數(shù)據(jù)的方法的相關(guān)資料,需要的朋友可以參考下本文詳細(xì)內(nèi)容介紹2022-07-25excel如何復(fù)制數(shù)據(jù)但不復(fù)制隱藏單元格 excel僅復(fù)制可見單元格數(shù)據(jù)方法
在復(fù)制表格數(shù)據(jù)時,不想復(fù)制隱藏的單元格數(shù)據(jù)怎么操作呢?一起來了解一下吧2022-09-14excel怎樣快速把多列數(shù)據(jù)變?yōu)橐涣袛?shù)據(jù) excel多列數(shù)據(jù)變?yōu)橐涣袛?shù)據(jù)方法
使用excel時,有時需要將表格中多列的數(shù)據(jù)合并到同一列, 該怎么操作呢?一起來了解一下吧2022-09-15Excel怎么僅顯示數(shù)據(jù)條? excel單元格顯示數(shù)據(jù)條的技巧
Excel怎么僅顯示數(shù)據(jù)條?exel表格中的數(shù)據(jù)想要做成圖表,比如數(shù)據(jù)條,該怎么操作呢?下面我們就來看看excel單元格顯示數(shù)據(jù)條的技巧2023-08-17powerbi怎么做數(shù)據(jù)分析? Excel用Power BI繪制數(shù)據(jù)分析圖表的教程
powerbi怎么做數(shù)據(jù)分析?excel安裝的插件,想要做數(shù)據(jù)分析,下面我們就來看看Excel用Power BI繪制數(shù)據(jù)分析圖表的教程2023-02-24Excel多個表格怎么合并并實現(xiàn)數(shù)據(jù)同步?
Excel多個表格怎么合并并實現(xiàn)數(shù)據(jù)同步?excel中有很多工作表,想要將這些工作表合并并實現(xiàn)數(shù)據(jù)同步更新,該怎么操作呢?下面我們就來看看詳細(xì)的技巧2023-02-27