• 締切済み

エクセルVBAの値貼り付けについて

いつもお世話になっております。 エクセルVBAについての質問ですが 以下のコードを使用するとどうしても元の書式の貼り付けになってします。 値(テキスト)貼り付けを実行したいのですがどこのコードをどのように変えればいいか教えてください。 ------------------------------------------------------------------------------------------- Sub IE_Open_Copy() Dim objIE As Object Const OLECMDID_SELECTALL = 17 Const OLECMDID_COPY = 12 Const OLECMDEXECOPT_DODEFAULT = 0 Const URL As String = "https://okwave.jp/question/" Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate URL Do While .Busy DoEvents Loop Do Until .ReadyState = 4 DoEvents Loop .ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT .ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT Application.Wait Now() + TimeValue("00:00:05") .Quit End With AppActivate Application.Caption, True Range("A1").Select Application.Wait Now() + TimeValue("00:00:05") Application.SendKeys "^v" Set objIE = Nothing End Sub ---------------------------------------------------------------------------------------------

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

期待していることを私が正しく理解しているかどうか 少々不安がありますが... Application.SendKeys "^v" ↑を↓に置き換えることで ActiveSheet.PasteSpecial Format:="テキスト", _     link:=False, DisplayAsIcon:=False テキストだけがクリップボードから張り付くと思います。

noname#232800
noname#232800
回答No.2

あ、分かった。 Range("A1").Select がペアレント指定してない。

noname#232800
noname#232800
回答No.1

objIE.Wait Now() + TimeValue("00:00:05") ってやる。

kawasaki5089
質問者

補足

回答ありがとうございます。 2つあるApplication.Wait Now() + TimeValue("00:00:05")を objIE.Wait Now() + TimeValue("00:00:05")に変えてみたら 「オブジェクトは、このプロパティまたはメソッドをサポートしておりません」と表示され実行できませんでした。

関連するQ&A

  • EXCEL VBA IEからダウンロード

    まず以下のコードを見てください(一部を抜粋) objIE.Navigate URL02 Do While objIE.Busy = True DoEvents Loop objIE.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT objIE.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT Application.Wait Now() + TimeValue("00:00:05") objIE.Quit Worksheets("商品情報").Select Range("A2:J100").Clear Range("A2").Select Application.Wait Now() + TimeValue("00:00:05") Application.SendKeys "^v", True とりあえずこれで使えてはいるのですが、これだと一度IEを終了することになるので、終了せずにエクセルのシートにペーストしたいと思いobjIE.Quitを削除しました。 そうしたらコピーまではするのですがペーストしなくなってしまいました。 なんとかIEを起動したままでペーストしたいのですが、どう直したらいいですか?教えてください。 宜しくお願いします。

  • サイトのページの全体をコピーしてエクセルに貼り付け

    サイトのページの全体をコピーしてエクセルに貼り付けたいのですが http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1341770528 を参考にしたのですが Sub test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" While objIE.ReadyState <> 4 DoEvents Wend objIE.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT '17,0 objIE.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT '12 DoEvents Workbooks.Add DoEvents Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:=False End Sub をしたのですが、うまくコピーできていません。 一番最後にコピーした文字がセルに張りついてしまいます。 なぜでしょうか?

  • 表示されるまで待たせたい

    vbaでieの操作をしているのですが Sub マクロ1() Do While ObjIE.Busy = True DoEvents Loop End Sub でも Sub マクロ2() Const READYSTATE_COMPLETE As Long = 4 Do Until ObjIE.ReadyState = READYSTATE_COMPLETE Loop End Sub でも、 表示される前に次のコードへ進んでしまって エラーになってしまいます。 表示されるまで待たせるには Application.Wait (Now + TimeValue("00:00:03")) を付け足すしかないのでしょうか? (できればこれは使いたくないです) ご教授よろしくお願い致します。

  • オブジェクト変数または With ブロック変数が設定されていません。

    下記の様に組みましたが、下記の★印の所で止まる様な事があります。 毎回止まるわけではないのですが、止まる時に「オブジェクト変数または With ブロック変数が設定されていません。」と表示されますが、 原因は何か?どの様にすればいいのか?など詳しく教えてください。 よろしくお願いします。 Sub test() Dim objIE As Object Dim strCOMMENT As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'データをセットする 'htmlドキュメント フォーム(0番目) アイテムに転記(代入)する objIE.Document.forms(0).Item("username").Value = "11111" objIE.Document.forms(0).Item("password").Value = "11111" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.subm.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'タイトル・コメントの読み込み strtitle = Sheets("sheet1").Range("k7") strCOMMENT = Sheets("sheet1").Range("k9") Application.WindowState = xlMinimized While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.forms(0).Item("title").Value = strtitle objIE.Document.forms(0).Item("comment").Value = strCOMMENT While objIE.readystate <> 4 While objIE.busy = True DoEvents ' Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.submit.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'フォーム(0番目)を .Submit(確認) する objIE.Document.forms(0).getElementsByTagName("input")(11).Click '←★この部分で止まる時があります。 While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 7, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Quit '.Quitで閉じる End Sub

  • 無限ループ VBA IE操作

    VBAです。 とあるサイトで Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub が無限ループに陥ります。 中断して Exit Sub を入れてみましたが、抜けれません。 ページは既に表示済みです。 なぜ無限ループが抜けられないのか、 なぜページが表示されているのにこのコードが繰り返されるのか 何かわかる方よろしくお願いします。

  • VBAでJAVAをコントロール

    javascriptのリンクが、<a href="javascript:void(0);">なんたらかんたら</a> であれば記載のソースが通じるのですが、 【今回の問題】 【html部分】 onclick="javascript:updateDisp();return false;" alt="なんたらかんたら"><input type="hidden" name="allupdate" value="なんたらかんたら"> 【javascriptの部分】 function updateDisp(){ update_flg = window.confirm("なんたらかんたら"); if(update_flg == true){ document.updateForm.submit(); } else{ alert("キャンセルしました。"); } とやられた途端に全く通じなくなりました。 どのように回避したらよいでしょうか。 【今回のではなく前回の(javascript:void(0);)成功分】 Private Sub CommandButton99_Click() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://xxxx/entry" Do While objIE.Busy = True DoEvents Loop Application.Wait (Now + TimeValue("00:00:03")) objIE.Document.all("ShopShopId").Value = Range("C8") objIE.Document.all("ShopPassword").Value = Range("C9") objIE.Document.forms(0).submit Application.Wait (Now + TimeValue("00:00:05")) For Each Obj In objIE.Document.getElementsByTagName("a") If Obj.innerText = "なんたらかんたら" Then Obj.Click Exit For End If Debug.Print objIE.LocationURL objIE.Navigate "xxxx/entry/entry_tops/all_update?prm=xxxxxxxxxxxxxxxxxxxxxxx" For i = 0 To objIE.Document.Links.Length - 1 If objIE.Document.Links(i).href = "javascript:void(0);" Then Application.Wait (Now + TimeValue("00:00:05")) objIE.Document.Links(i).Click Application.Wait (Now + TimeValue("00:00:05")) Exit For MsgBox "ループ抜け" End If Exit Sub Next Next objIE.Quit End Sub 上記は【今回の問題】に通じません。 'objIE.Navigate.Document.updateForm.fireEvent ("なんたらかんたら") 'objIE.Document.Script.updateDisp "javascript:document.updateForm.submit(true);" など試行錯誤しておりますが、javascriptのポップアップが回避できません。 どなたか何とかご教授お願いいたします。

  • ExcelのVBAで、順次動作の実現

    Excelのシートに、トグルボタンを3つ配置します。 ToggleButton1~3 そして、次のマクロを実行すると、2秒ごとに順番にトグルボタンが押されるのかと思いきや、6秒後に一斉にトグルボタンがへっこみます。 どうにか?2秒ごとに順番にトグルボタンが押されるように出来ないでしょうか? Sub test() Dim MyWait As String MyWait = 2 ToggleButton1.Value = True Application.ScreenUpdating = True DoEvents 'この間にもマクロを入れたい(0.1秒以内に処理できるものです) Application.Wait (Now + TimeValue("0:00:" & MyWait)) ToggleButton2.Value = True DoEvents Application.Wait (Now + TimeValue("0:00:" & MyWait)) ToggleButton3.Value = True Application.ScreenUpdating = True DoEvents End Sub

  • VBAでエクセルの表をワードに入力

    Excel/Word2002使用です。 ワードへの入力を自動化するためにVBAを使用してエクセルの表をワードのテンプレートに渡したいのですが。 エクセルのA1:C8のセルに表として値が入力されています。 この表をコピーしてワードに貼り付けます。 ワード側は何も入力されていない文書ですが、 テンプレートが用意されているので、このテンプレートを指定してワードを立ち上げます。 ワードに貼り付けられる表はタブ区切りです。 具体的には下記コード3行目の”winword.exe”を具体的なテンプレートのパス名にしたいのですが・・・ Sub word貼り付け() Dim mytskID As Double Range("A1:C8").Copy  mytskID = Shell("winword.exe", vbNormalFocus)  Application.Wait Now + TimeValue("00:00:10")  Application.SendKeys "^v", True  Application.Wait Now + TimeValue("00:00:10")  Application.SendKeys "%fa", True  Range("A1").Copy  AppActivate mytskID  Application.SendKeys "^v", True  Application.SendKeys "~", True  Application.Wait Now + TimeValue("00:00:05")  Application.SendKeys "%fx", True  Application.CutCopyMode = False MsgBox "完了しました" End Sub なお、上記コードも教科書通りにしたはずなのですが、 何故か「名前をつけて保存」のSendKeys "%fa"のときだと思うのですが、 ワード側ではファイルメニューの罫線が反応してしまいます。 あわせてご教授いただければ幸いです。 よろしくお願いします。

  • HPのtextデータをEXCELにコピーしたい

    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 ググってみた結果、これを使うとできそうな気がするのですがここから先がわかりません。 よろしくお願いします。

  • VBA IE制御 TABLE取得できません

    以下のコードを使用し、WEBページから「レース検索結果」のテーブルを取得しようとしました。 エラーは出ないのですがコード下から5行目で「OK」のメッセージボックスが 表示されるはずなのですが表示されませんでした。 ローカルウィンドウで確認したところ、summary「レース検索結果」が取得できていませんでした。 WEBページのソースには「レース検索結果」というsummaryは存在しているんですが・・・ どなたかご教授ねがいます OS:Windows 7 Excel:2007 InternetExplorer:11 Sub test() Const strURL As String = "http://db.netkeiba.com/?pid=race_search_detail" Dim objIE As New InternetExplorer Dim objDoc As HTMLDocument Dim objAllInput As Object Dim objInput As HTMLInputButtonElement Dim objAllTable As Object Dim objTable As HTMLTable With objIE .navigate strURL .Visible = True End With Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop Set objDoc = objIE.document Set objAllInput = objDoc.getElementsByTagName("input") For Each objInput In objAllInput If objInput.ID = "check_Jyo_09" Then objInput.Checked = True Exit For End If Next Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop For Each objInput In objAllInput If objInput.Value = "検索" Then objInput.Click Exit For End If Next Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop Application.Wait (Now + TimeValue("00:00:10")) Set objDoc = objIE.document Set objAllTable = objDoc.getElementsByTagName("table") For Each objTable In objAllTable If objTable.Summary = "レース検索結果" Then MsgBox "OK" Exit For End If Next End Sub

専門家に質問してみよう