excel2010の「新しいwebクエリ」を使ってieに表示されている「0」を含むデータをとりこみたいのですが、ie上で「0101.21」というデータを取り込むと、excelでは「101.21」となったり、「0101.90」が「101.9」と表示されてしまいます。
excelの書式を文字列にしても改善しません。
ie上の「0」を含むデータをそのままexcelにインポートするにはどうすればよいでしょうか?
使用しているのはexcel2010、ie11です。
取り込みたいwebページは
http://www.kanzei.or.jp/statistical/expstatis/he …
です。
No.3ベストアンサー
- 回答日時:
こんにちは
Webクエリって使ったことありませんが、ちょっと実験してみました。
ご提示のサイトのデータ全体を見たわけではありませんが、定型のデータあるいは何種類かの定型になっているものと想像しますので、書式を固定しておけば何とかなるのではと考えました。
ご質問の列に関しては、質問者様もすでに試していらっしゃいますが、書式を文字列にしても(多分、数値として処理されているようで)文字列として扱ってはくれませんね。
元のデータに規則性があるようですので、数値として扱われた場合でも書式設定で表示を変えることは可能です。
例えば、単純に「101.9」→「0101.90」と表示するためには、セルの書式設定を「0000.00」としておけば良いです。
しかしながら、ご提示のページを見ると同じ列でも「01.02」のようなデータがあるので、そのままでは「0001.02」となってしまうため十分とは言えません。
番号全体の体系が私にはわかりませんが、ページを見る限りでは、上記の2種類のタイプしかないように見受けられました。
もしも、比較的単純なルールで書式分けができるようであれば、以下のような設定で、お望みの表示になるものと思います。
以下は、ご質問にも出ている「番号」の項目(列)での書式設定の例です。
(読み込む列を仮にA列としています)
1)A列の書式を「0000.00」に設定
2)A列の条件付き書式で「セルの値<100」の場合、書式を「00.00」と設定
このように設定した上で、クエリのプロパティで「セル書式を保存する」にチェックをした状態で読み込めと、そのままで
0101.21
0101.29
0101.30
0101.90
01.02
・・・・
のような表示になって読み込まれます。
必要であれば、他の列についても同様の考え方で、表示の調整ができるものと思います。
※ 上記は、あくまでも表示上の処理を行っているだけですのでご留意ください。
表示と一致したデータの状態にするには、ANo2様のご提案の方法しか思いつきません。
ありがとうございます。
1、2の書式設定をして、webクエリを使用して取り込むと、ちゃんと希望通りの結果に表示されていました。
excelの書式設定ばかり気にして、データそのものの規則性を条件として書式設定をすることには気が付きませんでした。
本当にありがとうございます。
No.4
- 回答日時:
こんにちは。
一昨日から、ここのサイトと取り組んでいます。
Webクエリで、データを取ろうとしましたが、こちらは、ご質問者さんのようにできませんでした。そのサイトは右クリック不可で、コピーされることを拒んでいるように思われ、Table 状になっているのに、クエリでは認識されません。そこで、本格的なマクロに切り替えることにしました。
また、今回、著作権法からすると、このデータ自体をコピーすることは、そのデータの性格上(著作権法:第十三条-権利の目的とならない著作物)で、お咎めないはずですが、建前上は、あくまでも、個人でお使いになると、お考えになったほうがよろしいかと思います。
元のコードを見れば判るはずですが、innerText から起こしていますので、今は、どうしてもバグが避けられない状態です。しかし、一応、人前に出せるレベルなりましたので、ご披露いたします。画像は、卑金属分野を選びました。
'***
Sub AccessIE()
Dim strURL As String
'----セル幅の調整----(不要だったら、取り除く)
Dim ar, i As Long
If Cells(1, 2).ColumnWidth > ActiveSheet.StandardWidth Then
ar = Array(4, 7, 6, 2, 50, 4, 30)
For i = 1 To UBound(ar) + 1
Columns(i).ColumnWidth = ar(i - 1)
Next
End If
'----調整の終わり----
Cells(1, 1).Select
strURL = "http://www.kanzei.or.jp/statistical/expstatis/he …
'
Call AccessIETarget(strURL)
''Call IEInterupt '開発用
End Sub
Private Sub AccessIETarget(ByVal strURL As String)
Const baseUrl = "kanzei"
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
Dim i As Long, j As Long, k As Long
Dim tbls As Object, t, tAr, tRs, buf As String
objIE.Navigate2 strURL
objIE.Visible = True
Do While objIE.Busy Or objIE.ReadyState <> 4: DoEvents: Loop
With objIE
Call ToExcelSheet(objIE)
End With
objIE.Quit
Set objIE = Nothing
Beep
End Sub
Private Sub ToExcelSheet(objIE As Object)
Dim arItem(6)
Dim buf, tRs
Dim i As Long, j As Long, k As Long, col As Long
Dim m As Long
'------------obtaining data---------
k = 3 '最初の行
col = 2
With objIE
Set tRs = .document.getElementsByTagName("tr")
For i = 1 To tRs.Length - 1
buf = tRs(i).innerText
If Not buf Like "番号*" And Len(buf) < 150 Then
SplitSentence Trim(buf), arItem()
'終了信号
If arItem(1) Like "'##*" And arItem(4) = "" Then
Cells(k + m - 1, col + j - 1).ClearContents
Exit Sub
End If
Cells(k + m, col).Resize(, 6).WrapText = False
For j = 1 To UBound(arItem)
Cells(k + m, col + j - 1).Value = arItem(j)
Next
If Len(Join(arItem, "")) > 1 Then
k = k + 1
End If
Erase arItem
End If
buf = ""
Next
End With
End Sub
Private Function SplitSentence(ByVal str_text, ByRef arItem())
Dim s As String, buf As String
Dim i As Long
Dim RegEx As Object
Dim enter_text As String
Dim t As Long, l As Long, ib As Long, fc As Long
Dim r As Object
Set RegEx = CreateObject("VBScript.RegExp")
'------on purpose of obtaining Kanzei Data ---
With RegEx
.Global = True: .IgnoreCase = False: .MultiLine = True
.Pattern = "([\uFF21-\uFF3AA-Z]{2})"
End With
s = str_text
'開発検査用コマンド
'If IsNumeric(Left(str_text, 2)) Then Stop
ib = InStr(1, str_text, "-", 1)
If str_text Like "##*" Then
i = InStr(1, Left(s, 6), ".")
If i = 3 Then
arItem(1) = "'" & Left(s, 5)
arItem(4) = "'" & Mid(s, 6)
fc = 5
ElseIf i = 5 Then
arItem(1) = "'" & Left(s, 7)
If IsNumeric(Mid(s, 8, 3)) Then
arItem(2) = "'" & Mid(s, 8, 3)
arItem(3) = "'" & Mid(s, 11, 1)
fc = 12
End If
Else
arItem(2) = Mid(s, 1, ib - 1)
fc = ib
End If
End If
If fc = 0 Then
buf = s
Else
buf = Mid(s, fc)
End If
Set r = RegEx.Execute(buf)
If r.Count > 0 Then
t = r(0).firstIndex
l = r(0).Length
If Len(Replace(Mid(buf, 1, t), "-", "", 1, -1, 1)) > 0 Then
arItem(4) = Mid(buf, 1, t)
arItem(5) = Mid(buf, t + 1, l)
arItem(6) = Mid(buf, t + l + 1)
End If
ElseIf ib > 0 Then
arItem(4) = Mid(s, ib)
ElseIf arItem(1) = "" Then
arItem(1) = s
End If
End Function
わざわざマクロまで組んでいただいて、本当にありがとうございました。勉強させていただきます。
業界では広く普及しているデータですし、加工して売ったりするつもりなんて毛頭ないので、著作権は大丈夫だと思います。
私は原始的ですが、webクエリによる取り込みを自動マクロ記録で記録後、URL上のページ番号をFOR NEXTのカウンターとして利用するマクロを作っている途中です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、空白を表示したい
-
エクセルで文字が白くなる
-
エクセルで文字を含む式に、カ...
-
アクセスで#エラーを表示させ...
-
エクセル(2003) 「1900/1/0...
-
エクセルで、時間 0:00を表示...
-
today関数で日付を全角文字で表...
-
EXCELの散布図で日付が1900年に...
-
excelの軸
-
エクセル条件付書式で指定の時...
-
小数点以下の数字だけ小さいフ...
-
エクセルでコメントの書式を一...
-
エクセルの書式設定が解除でき...
-
Excelのセルでの配置です。
-
エクセルで「0(ゼロ)」を印...
-
Excelのテーブルでセルの書式設...
-
アルファベットにフリガナ
-
Access ¥マークを表示しない
-
セルの書式が多すぎるため、書...
-
エクセルのTEXT等で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字が白くなる
-
Excelで、空白を表示したい
-
エクセルで文字を含む式に、カ...
-
エクセルで、時間 0:00を表示...
-
アクセスで#エラーを表示させ...
-
エクセル条件付書式で指定の時...
-
小数点以下の数字だけ小さいフ...
-
エクセル(2003) 「1900/1/0...
-
excelの軸
-
EXCELの散布図で日付が1900年に...
-
Excelのテーブルでセルの書式設...
-
today関数で日付を全角文字で表...
-
Access ¥マークを表示しない
-
エクセルのセルの書式ユーザー...
-
Excel 書式の一致を調べる関数...
-
INDESIGNで空改行などのマーク...
-
エクセルの書式設定が解除でき...
-
エクセル/グラフのデータテー...
-
TO_CHARでのゼロ非表示について
-
エクセルでゼロ「0」が「-」に表示
おすすめ情報