
HPをまるごとコピーしてEXCELのシートに貼り付けるマクロを作りました。
objIE.ExecWB 17, 0
objIE.ExecWB 12, 0
objIE.Quit
Worksheets("Sheet1").Select
Range("A5:A5500").Clear
Range("A5").Select
Application.Wait Now() + TimeValue("00:00:05")
ActiveSheet.Paste
Set objIE = Nothing
ですがこれだとハイパーリンクなどもコピーしてしまい使いづらいのでtextデータだけをコピーしたいと思います。
objIE.Document.Body.InnerText
ググってみた結果、これを使うとできそうな気がするのですがここから先がわかりません。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
●
objIE.ExecWB 17, 0
objIE.ExecWB 12, 0
は全選択してコピーしているだけなので、
クリップボードの中のテキストだけを
PasteSpecialするだけです。
myURL = "http://oshiete1.goo.ne.jp/qa4607197.html?ans_cou …
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Visible = True
.Navigate myURL
Do While .Busy
Loop
Do Until .ReadyState = 4 'READYSTATE_COMPLETE
Loop
.ExecWB 17, 0 'OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
.ExecWB 12, 0 'OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
End With
objIE.Quit
Set objIE = Nothing
With Worksheets("Sheet1")
.Range("A5:A5500").Clear
.Range("A5").Select
.PasteSpecial Format:="テキスト"
End With
●どうしても.Document.Body.InnerTextを使うなら、
DataObjectを使ってクリップボードに入れる方法も
あるかもしれません。
Microsoft Forms 2.0 Object Libraryに参照設定が
必要です。
ついでに下のようにほかの2つも参照設定しておけば、
コードを書くときに楽ですよね。
上の17,0の意味もわかりやすくなると思います。
'Microsoft Internet Controlsに参照設定
'Microsoft HTML Object Libraryに参照設定
'Microsoft Forms 2.0 Object Libraryに参照設定
Dim objIE As InternetExplorer
Dim myDoc As MSHTML.HTMLDocument
Dim myData As DataObject
myURL = "http://oshiete1.goo.ne.jp/qa4607197.html?ans_cou …
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Visible = True
.Navigate myURL
Do While .Busy
Loop
Do Until .ReadyState = 4 'READYSTATE_COMPLETE
Loop
Set myDoc = .document
End With
myStr = myDoc.body.innerText
objIE.Quit
Set myDoc = Nothing
Set objIE = Nothing
Set myData = New DataObject
With myData
.SetText myStr
.PutInClipboard
End With
With Worksheets("Sheet1")
.Range("A5:A5500").Clear
.Range("A5").PasteSpecial
End With
Set myData = Nothing
No.3
- 回答日時:
#2です。
>objIE.ExecWB 17, 0
>objIE.ExecWB 12, 0
を使うと、私のコードは↓のようにしてもいけます。
'参照設定:Microsoft Forms 2.0 Object Library
Sub test()
Dim MyShell As Object, MyWindow As Object
Dim CB As New DataObject
Dim mystr As String
Dim sp As Variant
Dim i As Integer
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
Set MyShell = CreateObject("Shell.Application")
For Each MyWindow In MyShell.Windows
If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then
MyWindow.ExecWB 17, 0
MyWindow.ExecWB 12, 0
With CB
.GetFromClipboard
mystr = .GetText
End With
sp = Split(mystr, vbCrLf)
For i = 0 To UBound(sp)
With ws.Cells(i + 1, 1)
.NumberFormatLocal = "@"
.Value = sp(i)
End With
Next i
If ws.Cells(1, 1).Value <> "" Then Exit For
End If
Next
Set ws = Nothing
Set wb = Nothing
End Sub
No.2
- 回答日時:
IE全選択はコードに含めていません。
IEで選択している範囲をシートに転記します。
Sub test()
Dim MyShell As Object, MyWindow As Object
Dim mystr As String
Dim sp As Variant
Dim i As Integer
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
Set MyShell = CreateObject("Shell.Application")
For Each MyWindow In MyShell.Windows
If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then
mystr = MyWindow.Document.Selection.CreateRange.Text
sp = Split(mystr, vbCrLf)
For i = 0 To UBound(sp)
With ws.Cells(i + 1, 1)
.NumberFormatLocal = "@"
.Value = sp(i)
End With
Next i
If ws.Cells(1, 1).Value <> "" Then Exit For
End If
Next
Set ws = Nothing
Set wb = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 11:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excelの行をコピーして貼り付け...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
EXCEL VBA シートをコピーする...
-
VBAでVBAを削除?
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
エクセル2007 セルの名前の重...
-
エクセルの1シートの内容を複...
-
【エクセル】プルダウン設定の...
-
PDFファイルをコピーしてエクセ...
-
ページの設定を別シートにコピ...
-
EXCEL VBA シートの名前を指定...
-
エクセルマクロ 繰り返して、...
-
Excel 複数 シートコピー 同...
-
シートをたくさんコピーするに...
-
エクセルマクロ。複数のbookか...
-
シートのコピーとMsgbox無効化
-
エクセル オートフィルタは行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの行をコピーして貼り付け...
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
Excel 数式の保護をしたセルを...
-
【VBA】コピー&複数個所のペー...
-
エクセルのワークシートをUSBメ...
-
エクセルシートを別のエクセル...
-
エクセルでシートを「移動また...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
ExcelVBAで、ユーザーフォーム...
-
【エクセル】プルダウン設定の...
-
CSVファイルについて質問です。
-
PDFファイルをコピーしてエクセ...
-
ページの設定を別シートにコピ...
-
VBA シートをコピー後、ボタン...
-
エクセルのページをシートごと...
おすすめ情報