2022/04/10

VBA / 使用Excel VBA爬蟲Google搜尋結果 2

補充  VBA / 使用Excel VBA爬蟲Google搜尋結果 除了單純分割字串之外

可以使用 Html Document的方式來解析內容

VBA / 抓取網路 JSON資料 版本4

繼續補充 VBA處理 Json的方式

Word / 關於合併列印 補充

在前一篇 Word / 關於合併列印提到「規則─Skip Record if」的問題

在測測時,如果是一筆資料在單一頁面設定「Skip Record if」,套印的結果是正常的,可以篩選掉資料

但是用在標籤,或者單一頁面多筆資料的時候,篩選資料就會不正常

後來用英文關鍵字來查詢

在這篇 mail merge rules (Skip Next If) Not Working

原作者想要達成的效果跟我類似,也一樣無法正確篩選資料

後來有人回答:

The Skip If field cannot be used in a label type merge and it is no longer recommended for use in a letter type merge.

Better to use the Filter function in the Edit Recipient List facility.

也是建議在「編輯收件者清單」用篩選功能來處理

另外補充一點

如果要用 * 萬用字元

只能一次用1個/側,例如:台中* 或者 *台中

台中*,表示以台中開頭的文字

*台中,表示以台中結尾的文字

不能同時使用2個/側,例如:*台中*來表示文字中任一位置的台中

這篇有人回答

Old question, but wildcards on both sides has never worked and that used to be documented

另一篇也有類似的回答(其實是同一個作者在不同論壇的提問…)

Double wildcards don't work in Word is my understanding?

 

參考資料:

mail merge rules (Skip Next If) Not Working

Word MERGEFIELD wildcard not correctly matching

Word mergefield wildcard not correctly matching

VBA / 抓取網路 JSON資料 版本3

之前有2篇記錄在Excel VBA分割Json資料的方式

原理都是把Json資料當作字串,使用分割字串的函式進行

Word / 關於合併列印

最近剛好在處理大量輸出標籤的合併列印功能

有些地方是用很土炮的方式來處理

雖然還是達成相同的效果

不過還是想試試看有沒有比較好的方法,以及想要知道「Next Record」之外的其他規則應該如何設定

在網路上爬了一些文章

不過我的感覺是變得更混亂了……

嘗試整理一下自己的理解

1.標籤-更新標籤

1)啟動合併列印─選擇標籤,這樣「更新標籤」才能使用

2)可以選擇標籤的樣式,如果是直接開啟已經有套用標籤版面設定的檔案就可以直接按取消

3)插入合併列印欄位之後,點擊「更新標籤」其他標籤就會套用相同排版,同時插入「Next Record」

Word自動插入的「Next Record」是放在第二個標籤的上方

我以前的習慣是放在第一個標籤的最後

其實結果都一樣

要注意的都是最後一個標籤的資料後面不需要「Next Record」

因為分頁之後的第一個標籤會自動跳到下一筆資料

 

4)如果想要再調整排版,只要調整完第一個標籤,再按「更新標籤」即可

 

簡單來說,只要完成第一個標籤的排版(橫書,左上第一個標籤)

透過「更新標籤」可以讓其他標籤套用相同的排版

2.合併列印有重複的資料欄位的其他筆資料

例如:上面的資料中A欄跟B欄的資料其實就只有兩種:阿土伯/董事長、錢夫人/董事長夫人,主要不同的是C欄跟D欄

如果今天想讓C欄跟D欄的資料同時列印在同一張頁面上,可以搭配「Excel小計」分群組的方式來達成

原始的Excel檔案,資料先排序之後,透過「小計」功能可以在每一個排序類別之間插入一列「總計」

目的是要多一個空白資料的列,所以應該也可以手動插入

結合「合併列印」的「規則─Next Record If」設定欄位比對值不為空才顯示資料,例如「郵區」

因此,當資料比對到空白的列時,因為資料為空值就會停止

1)同時使用「Next Record If」跟「Next Record」

2)可以發現,阿土伯跟錢夫人同時顯示,並且只顯示有資料的部分(各6筆,黃底部分)

3)如果把下面的「Next Record」移除

4)可以發現只會顯示阿土伯的所有(6筆)資料,其他都是空白

5)如果再移除上方的後5筆(有資料的3筆;沒資料的2筆)

6)可以發現下方的第一筆,跟上方的第三筆一樣

這是因為下方的第一筆資料前面沒有設定規則,所以會套用上方最後一筆的資料

3.如果要篩選套印的資料時

最好是透過「編輯收件者清單」的「篩選」或者直接用「勾選」的方式

必須要注意,透過「篩選」可能會影響當初小計產生的空白列是否仍然存在

也就可能會影響群組「「Next Record If」的結果

我一開始想嘗試「規則─Skip Record if」

但是無論我怎麼測試都無法達成我想要的效果

感覺在資料來源檔案整理好要套印的內容會是最好的方法

4.規則─If…Then…Else

可以透過這個方法比對資料來決定要顯示的文字

最常見的就是透過性別來判斷顯示先生/小姐

如果性別是男,顯示先生;否則為小姐

除了透過「規則」選用「If…Then…Else」之外

也可以從「插入─快速組件─功能變數」選擇 If功能變數

只是功能變數內容就要用手動輸入

其中合併列印欄位暫時用替代文字來表示

之後再透過編輯功能變數來插入合併欄位即可

透過快速組件插入的If功能變數,會顯示「\* MERGEFORMAT」

備註:

以往都是在Excel處理好要套印的內容,無論是分組、篩選、排序、甚至設定特定的用詞

雖然有點麻煩,但卻是最直觀的方式

Word合併列印的規則,除了「Next Record」之外

其他的我實在是搞不懂邏輯順序

不過這之中以後可以用到的應該是合併列印相同群組裡的所有資料

以及功能變數的設定

參考資料:

沉思的伊文: Office Word 2007/2010/2013 應用技巧:用功能變數 IF、Compare、=(Formula) 自動計算學年度、學

【Word2013教學】75 合併列印 規則以條件評估引數【201606】 – YouTube

Word合併列印進階應用 – YouTube

Word 基礎教學 12:合併列印 & 信封與標籤設定 – YouTube