アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前は正常に動いていたのですが、現在エラー1004となり起動してくれません。
どこがおかしいのか教えていただけると幸いです。

Sub listC()

Cells.ClearContents
Range("a1").Select

x = InputBox("タブの数")

For i = 1 To x Step 1

AppActivate "Google Chrome"

SendKeys "^{Tab}", True

SendKeys "^a", True

SendKeys "^c", True

AppActivate "Microsoft Excel"

Application.Wait Now() + TimeValue("00:00:01")

ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _
False

Selection.End(xlToRight).Select
Selection.End(xlDown).Select
Selection.End(xlToLeft).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select

Next i

End Sub

よろしくお願いします。

質問者からの補足コメント

  • つらい・・・

    シートのアクティブ化はできているようです。
    一度yをコピーし、マクロを起動するとxの数だけyがペーストされます。
    例:x=3




    タブ毎の全文章をコピペしたいです。

      補足日時:2017/07/20 19:25
  • ありがとうございます!!
    エラーは出ることなく使用できるようになりました。

    しかしながら、複数のタブ(i=2~)で行うと、最初の1タブのみのページが全選択+コピーされ、2タブ目以降の情報がExcelに落ちない(白紙)現状です。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/07/21 11:38

A 回答 (4件)

できれば、Tabは、何を意味しているのか教えていただければとは思っていますが、むしろ、Google Chrome が絶対的なものなのか、IEが代用できるのか、とか。


IEの場合は、ほぼ画面のデータ撮りができます。

無理強いはしないのですが、その他の手段として、今、私は、SeleniumBasic で、Google Chrome を動かすことも試しています。IEのみが今のところ、Excel VBAでは連結でき、イベントも取れるのですが、他のブラウザ(Edgeを含む)は、こうした特別のWrapper でないと不可能のようです。

SeleniumBasic は、設定が面倒なので、ちょっとお勧めできません。
    • good
    • 0

>2タブ目以降の情報がExcelに落ちない(白紙)現状です。



おそらく、微妙なバランスによって成り立っていたのではないでしょうか。
だから、そのマクロのバランスを壊してしまったような気がします。

今の段階では、それ自体、確認もとれませんし、本格的なマクロでもありませんので、もし、キーボードマクロをするつもりなら、UWSCで行ったほうが楽だとは思います。

>2タブ目以降の情報がExcelに落ちない(白紙)現状です。

しかし、Webサイトのページが決まっているなら、Document.All や InnerText でも可能ですし、IEのコマンドのExecWBから、OLECMDID_SELECTALL ->OLECMDID_COPY という方法もありますし、いろんな方法が考えられますが、SendKeys だけですと、これ以上は私には分からないです。
    • good
    • 0

こんにちは。



シートのアクティブ化?
今まで動いていたというのもすごいと思います。

Sub listC()

 ThisWorkbook.ActiveSheet. Cells.ClearContents '←変更
 Range("A1").Select

 x = InputBox("タブの数")

 For i = 1 To x
  AppActivate "Google Chrome"
  SendKeys "^{Tab}", True
  SendKeys "^a", True
  SendKeys "^c", True
  AppActivate Application.Caption '←変更
  Application.Wait Now() + TimeValue("00:00:01")
  ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _
    False
  With ActiveSheet.UsedRange
   i = .Cells(.Cells.Count).Row + 2  '←変更
  End With
  Cells(i, 1).Select
 Next i
End Sub

ちょっと手を入れてみました。

Google Chrome というと、通常、SeleniumBasic やiMacros を使うはずですが、そのどれも使わないというのは、考えたこともありませんでした。

>シートのアクティブ化はできているようです
シートというよりも、Excel アプリのフレームだけのことがあります。
シートのアクティブ化というのは、厳密には、Selection の中身が "Range" でないといけないわけです。
この回答への補足あり
    • good
    • 0

対象シートをアクティブ化するとか。


http://www.tipsfound.com/vba/191004
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!