三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


[記事一覧、バックナンバーを見る]

○○さんへ サーバー上/IE上のExcelファイルからデータを抜き取る方法 途中まで、、、

下記のような質問をもらいました

サーバーにあるエクセルファイルのセルを(IEの中のエクセル)から、
通常のエクセルへコピーしたいのですがうまくいきません。
両方のファイルは開いていてるので、コピーする先のシートをアクティブにできれば、うまくいくのですが、
どうにもうまくいきません。
よろしくお願いします。

Sub TENKI()

部材記号 = ActiveCell.Value
部材名 = ActiveCell.Offset(0, 2).Value
ActiveCell.Offset(1).Select
イエス = MsgBox(部材記号 & " 部材名も必要ですか?", vbYesNo)
If イエス = 6 Then
ActiveCell = 部材記号
ActiveCell.Offset(0, 2).Value = 部材名
ActiveCell.Offset(1).Select
ElseIf イエス = 7 Then
ActiveCell = 部材記号
ActiveCell.Offset(1).Select
End If
End Sub

調べること

1.IE上で開いているExelを判断する

起動済み、指定したURLのIEを探し、閉じる方法
http://ken3-info.blog.ocn.ne.jp/objie/2009/09/urlie_785f.html
このソースを元にして、探してみたいと思います。

イントラネットなどで、サーバーに裸のxlsファイルが置いてあり、ブラウザで(IEで)そのファイルが開かれている、 そのアクティブなセルからデータを取得したい、そんな処理です。

まず、 http://h22-jun.top1-12.info/2010-06-28.xls テストファイル を 探してみたいと思います。

Sub ddd() ' http://h22-jun.top1-12.info/2010-06-28.xls を 見つけるテスト
'CreateObject("Shell.Application") で
'通常のフォルダー表示ファイルエクスプローラーとIE(インターネットエクスプローラー)
'を.FullNameで区別する

    Dim objShell  As Object
    Dim objIE     As Object
    Dim n         As Integer
    
    'これで、エクスプローラーのウインドウを取得する
    Set objShell = CreateObject("Shell.Application")
      
    '後ろから消してく。頭から、For n=0 To objShell.Windows.Count - 1 のループでもいいけど
    '.Windowsでエクスプローラーとインターネットエクスプローラーにさわれる
    For n = objShell.Windows.Count To 1 Step -1  'MAXから-1ひいてく感じで後ろからチェック
        Set objIE = objShell.Windows(n - 1) 'n番目のウインドウを代入 配列が0からなので-1補正
        Debug.Print n
        Debug.Print ".FullName " & objIE.FullName
        Debug.Print ".locationURL " & objIE.locationURL
        
        '.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する
        If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then 'IEか?
            If Right(objIE.locationURL, 14) = "2010-06-28.xls" Then '次に.locationURでURLのチェック06-28.xlsか?
                Exit For  '見つかったので、Exitでループ抜ける
            End If
        End If
    Next
    Set objShell = Nothing

    '↑上で、.locationURL 2010-06-28.xlsが見つからなかった 判断
    If n = 0 Then  'ループを最後まで回ってしまった=見つからなかった n=0で判断
        MsgBox "2010-06-28.xls が 見つかりません"
        Exit Sub  'テスト関数を抜ける・・・
    End If
    
    '見つかったので、IE上のExcelファイルを操作する(値を取り出す)
    Debug.Print ".Name " & objIE.Name

End Sub

単純に、objIE.FullName で IEか普通のファイルエクスプローラーか判断して、
次に、objIE.locationURL で XXXXXX.xls を判断しただけです。

試行錯誤の失敗動画 : http://www.youtube.com/watch?v=AIkRXCjn5Go

↑動画の中でLeftとやっているけど、If Right(objIE.locationURL, 4) = ".xls" Then ですね。Leftは左からなので、拡張子.xlsを判断するなら、Rightから4文字取らないと・・・

2.上記(1.)で捕まえたIE上のExcelのアクティブセルを取得。

2.1 テスト方法 と 失敗、試行錯誤、、、

objie.document.Sheets("DATA").cells(7,3)
で、IE上のデータを取得できたのですが、
.ActiveCell が 効かなかったです。

証拠の失敗動画 と ウォッチ式で止めて探る方法
いつもの操作動画 : http://www.youtube.com/watch?v=VZU4alVQdhw

少し続きを調べてみます。。。

少々(しばらく)お待ちを。 三流プログラマー Ken3




三流君へ メッセージを送る

全ての質問に答えることはできませんが、
ダメもとで、気軽に質問、感想、メッセージを送ってくださいね・・・

感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)
例:[XXXXさんへ回答例]←みたいに回答していたり...


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)