WEBãã¼ã¸å ã«ãã表(ãã¼ãã«)ããã¯ã¼ã¯ã·ã¼ãã«æ¸ãåºãã³ã¼ããç´¹ä»ãã¾ãã
âãã¡ãã®è¡¨ãåãè¾¼ãã§ã¿ã¾ãããã
| åçª | åç© | ç¨®å¥ | ä¾¡æ ¼ |
|---|---|---|---|
| 1-1 | ã¿ãã | ãã ãã® | 100 |
| 1-2 | ããã | ãã ãã® | 200 |
| 1-3 | ãã¡ã | ãã ãã® | 300 |
WEBèªè¾¼ã«ã¯ãããããªæ¹æ³ãããã¾ãããããã§ã¯æè»½ã«å®è¡ã§ããã
ãQueryTableãªãã¸ã§ã¯ããã使ç¨ããæ¹æ³ãç´¹ä»ãã¾ãã
QueryTablesããããã£ã§WEBãã¼ã¸ãèªã¿è¾¼ã
ã½ã¼ã¹ã³ã¼ã
Sub WEBãã¼ã¸ã®è¡¨ãã·ã¼ãã«åºåãã() Dim 対象URL As String 対象URL = "https://www.limecode.jp/entry/utility/querytables-import-web-table" Dim åºåå ã·ã¼ã As Worksheet Set åºåå ã·ã¼ã = Worksheets.Add ' ä»åã¯æ°è¦ã·ã¼ãã«èªã¿è¾¼ã¿ With åºåå ã·ã¼ã.QueryTables.Add(Connection:="URL;" & 対象URL _ , Destination:=åºåå ã·ã¼ã.Range("A1")) .WebSelectionType = xlAllTables ' èªã¿è¾¼ã対象 ' xlAllTablesï¼å ¨ãã¼ãã«ããxlSpecifiedTablesï¼ç¹å®ã®ãã¼ãã« '.WebTables = "1" ' âã§xlSpecifiedTablesãé¸ãã å ´åã«ä½çªç®ã®ãã¼ãã«ãèªãã .WebFormatting = xlWebFormattingNone ' å¤ã®ã¿èªè¾¼ãAllã ã¨æ¸å¼ãªã³ã¯ãå«ã .WebDisableDateRecognition = True ' æ¥ä»ã¸ã®å¤æãæ¢ããå ´åã¯True .Refresh BackgroundQuery:=False ' âèªã¿è¾¼ã¿ãå®è¡ .Delete ' âæ¥ç¶ãåãï¼ãã¯ã¨ãªã¨æ¥ç¶ãä¸è¦§ããåé¤ï¼ End With End Sub
解説
CSVãèªã¿è¾¼ããªã©ã«ã使ç¨ããQueryTableã§ããã
Addã¡ã½ããã®Connectionã«URLãæ¸¡ããã¨ã§WEBã®èªã¿è¾¼ã¿ãå®è¡ã§ãã¾ãã
WEBã®èªã¿è¾¼ã¿ãè¡ãå ´åã¯ã
.Refresh BackgroundQuery:=False ' âèªã¿è¾¼ã¿ãå®è¡ .Delete ' âæ¥ç¶ãåãï¼ãã¯ã¨ãªã¨æ¥ç¶ãä¸è¦§ããåé¤ï¼
ãã®é¨åãå¿ããªãããã«ãã¦ãã ããã
.Deleteãæ ãã¨ããã¯ã¨ãªã¨æ¥ç¶ãã«ãµã¤ãã¸ã®æ¥ç¶ãæ®ã£ã¦ãã¾ãã
Excelã«ããµã¤ãã«ãè² æ
ãããã¾ãã
BackgroundQuery:=Falseãå¿ããã¨ãDeleteã®éã«ã
| å®è¡æã¨ã©ã¼ '1004':ãã¼ã¿ãæ´æ°ãã¦ãã¾ããå¾ã§ããä¸åº¦ã試ããã ããã |
ãçºçãã¾ãã
è¦å®å¤ãTrueã§çç¥ãããã¨ã¯ã§ãã¾ããã®ã§å¿ããã«æå®ãã¦ãã ããã
ã¾ããä¸è¨ã®ã³ã¼ããå®è¡ãã¦æ¬ãã¼ã¸ãå®éã«èªã¿è¾¼ãã§ã¿ãã¨ã
ç®çã®è¡¨ã ãã§ãªããVBAã®ã³ã¼ãé¨åãèªã¿ããã§ãã¾ããã¨ããããã¾ãã
ï¼æ¬ãµã¤ãã®é»ç¶²æãé¨åã¯ãã¼ãã«ã¨èªèããã¦ãã¾ãããã§ãï¼
ãã®å ´åã¯ã
.WebSelectionType = xlAllTables ' â対象ããå ¨ãã¼ãã«ãããã1çªç®ã®ãã¼ãã«ã ããã«æ¸ãæã .WebSelectionType = xlSpecifiedTables .WebTables = 1
ãã®ããã«æ¸ãæãããã¨ã§ãç®çã®ãã¼ãã«ã ããèªã¿è¾¼ããã¨ãã§ãã¾ãã
ãã¼ãã«ãè¤æ°ããå ´åããä½è¨ãªãã®ããã¼ãã«ã¨ãã¦æ¤ç¥ãããå ´åã¯ã
ãã¡ãã®ããããã£ãè¨å®ãã¦å¯¾å¿ãã¦ãã ããã
ä¸è¨ã®éãWebããèªã¿è¾¼ãéã¯ã.Webï½ï½ãã®ããããã£ãå©ç¨ã§ãã¾ããã
代ããã«ã.TextFileï½ï½ãã®ããããã£ã¯ä½¿ç¨ã§ãã¾ããã
ç¹ã«ãCSVèªã¿è¾¼ã¿ã§ã1-1â1æ1æ¥ã¸ã®å¤æãæ¢ããããã¨ãã«ä½¿ç¨ããã
.TextFileColumnDataTypes = Array(2, 1, 1, 1)
ãã®æå®ã¯WEBèªã¿è¾¼ã¿æã«ã¯ä½¿ç¨ã§ãã¾ããã
â» ã¢ããªã±ã¼ã·ã§ã³ã¾ãã¯ãªãã¸ã§ã¯ãå®ç¾©ã®ã¨ã©ã¼ã«ãªãã¾ãã
ãã¼ã¿å ¨ä½ã«å¯¾ãã¦æ¥ä»ã¸ã®å¤æã忢ããã
.WebDisableDateRecognition = True
ãã¡ãã®è¨å®ã§ä»£ç¨ãã¦ãã ããã
â» ãDisableããªã®ã§ãTrueã ã¨å¤æãããªããã«ãªãç¹ã«æ³¨æ
åãã¨ã«æ¥ä»ãã©ããå¤å®ãããã¨ã¯ãæ®å¿µãªããQueryTableã§ã¯ã§ãã¾ããã
å ãã¦ã0001ããã1ãã«å¤æããªãæ¹æ³ãQueryTableã«ã¯ããã¾ããã
è¤éãªè¨å®ãè¦ããå ´åã¯ãPowerQueryãªã©å¥ã®æ¹æ³ãæ¤è¨ãã¦ä¸ããã
æ±ç¨é¢æ°å
ãã®å¦çãããä½¿ãæ¹ã¯ãæ±ç¨é¢æ°ã«ãã¦æã£ã¦ããã¨ä¾¿å©ã§ãã
' æ±ç¨é¢æ°ã使ç¨ããã¨ãã¯ãæ¬ä½ã¯ããæ¸ããâ Sub WEBãã¼ã¸ã®è¡¨ãã·ã¼ãã«åºåãã() Call QueryTableã§WEBä¸ã®è¡¨ãèªã¿è¾¼ã(Worksheets.Add.Range("A1") _ , "https://www.limecode.jp/entry/utility/querytables-import-web-table" _ , 1, True, True) End Sub ' QueryTableã«ããWEBèªã¿è¾¼ã¿ã®æ±ç¨é¢æ° Sub QueryTableã§WEBä¸ã®è¡¨ãèªã¿è¾¼ã(åºåèµ·ç¹ã»ã« As Range _ , 対象URL As String, Optional ãã¼ãã«No As Long = -1 _ , Optional isæ¸å¼ãªã³ã¯å«ã As Boolean = False, Optional isæ¥ä»ã«å¤æãã As Boolean = False) With åºåèµ·ç¹ã»ã«.Worksheet.QueryTables.Add("URL;" & 対象URL, åºåèµ·ç¹ã»ã«) If ãã¼ãã«No = -1 Then ' ãã¼ãã«Noçç¥æã¯å ¨ãã¼ãã«ã対象 .WebSelectionType = xlAllTables Else .WebTables = xlSpecifiedTables .WebTables = ãã¼ãã«No End If .WebFormatting = IIf(isæ¸å¼ãªã³ã¯å«ã, xlWebFormattingAll, xlWebFormattingNone) .WebDisableDateRecognition = Not (isæ¥ä»ã«å¤æãã) .Refresh BackgroundQuery:=False .Delete End With End Sub
ãã¯ãæ¬ä½ã¯ãã¯ã1è¡ã«ãªã£ã¦ãã¾ããã
ãã®ããã«ãããããå¦çã¯æ±ç¨é¢æ°ã«ãã¦ããã¨ä¾¿å©ã§ãã
èå³ãããã°ãã¡ãã®è¨äºãã覧ãã ããã
以ä¸ã§QueryTableã«ããWEBèªã¿è¾¼ã¿ã®è§£èª¬ãçµããã¾ãã
QueryTableã¯æ§æãã·ã³ãã«ã§ç°¡åã«å®è¡ã§ãã¾ãã®ã§ã
ãã¨ããããå®è¡ãã¦ã¿ã¦ä¸æããããªãã£ããä»ã®æ¹æ³ã試ãã
ãããªä½¿ãæ¹ã«åãã¦ãã¾ãã
æè»½ãªæ¹æ³ã§ãã®ã§è¦ãã¦ããã¾ãããã