人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルについての質問です。
自分の使っているエクセルシートにはA列?F列まで上から下まで1000行程度使って色々なデータがあります。
この中でF列は上から下まで
【 】 :::【 】
という文章が載っています。F列に1行ずつ登録しているのですが下記のサイト
http://www.kosho.or.jp/public/book/detailsearch.doで検索後
からエクセルに移行する場合に「Alt+Tab」キーで切り替えるのですが通常、切り替えると
カーソルはA列にあるのですがこれを切り替えると同時にカーソルがF列にあるように
する事はできるでしょうか。
ちなみにサイトはこれしか利用しませんが何度も切り替えます。
エクセルは2003です。

●質問者: dvd-mania
●カテゴリ:コンピュータ インターネット
✍キーワード:エクセル カーソル キー サイト データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● vegah
●35ポイント

入力フォームを使う方法はいかがでしょうか。

F1セルがF列の項目見出しが入っているものとして、

F1からF1000(一番下の行)までを選択した状態で、

メニューバーから『データ』『フォーム』をクリックします。

確認メッセージが表示されるかもしれませんが、F1が項目見出しになっていれば、『OK』をクリックします。

これで、F2から順に下のセルにカーソルが移動しながら入力されるように入力フォームが表示されます。


2 ● ken3memo
●35ポイント

少し(イヤだいぶかも)的から外れているかもしれませんが、サンプル作ってみました。

今回作成したサンプルはOS:Windows XP IE8 Excel2003でテストしました。

http://d.hatena.ne.jp/ken3memo/files/Book1102.xls

[file:ken3memo:Book1102.xls]

です。(裸の.xlsなのでダウンロード時 警告出るので、そのまま開かないで保存してから使ってください)

動かしながら、下の解説を見てください。※百聞は一見に...

↑↓が完成するまでの下書きは http://d.hatena.ne.jp/ken3memo/20091102/1257102258 を見てください。

シートに下記のコードを貼り付けます。

貼り付け手順:シートのイベントにコードを書きたいので、

シートの名前の上にカーソルを

合わせてから右クリック、

コードの表示を選択する

[f:id:ken3memo:20091031063342j:image]

Option Explicit

'ダブルクリックのイベント
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 1 Then  'A列の場合だけ、処理する。
 Call ie_test(Target.Value)  'クリックされた場所の値をIEに渡す。
 Cells(Target.Row, 6).Select  'F列の選択
 End If
End Sub

'本のタイトルを受け取り、IEを起動して、書名にセットします。
Private Sub ie_test(bookname As String)

'起動済みのIEを探す
 Dim objShell As Object  'Shell.ApplicationのWindowから探したいので
 Dim objIE As Object  'IEを入れる箱(捕まえてコントロールしたい)
 Dim n As Integer  'カウンターです。

  'これで、エクスプローラーのウインドウを取得する
 Set objShell = CreateObject("Shell.Application")
 Set objIE = Nothing  '初期化する(フラグ代わりも兼ねて、後でIs Nothingでチェックしたいので)

  '後ろから探す(素直に前から探してよ(笑))
  '.Windowsでエクスプローラーとインターネットエクスプローラー(FullNameがIEXPLORE.EXE)にさわれる
 For n = objShell.Windows.Count To 1 Step -1  'MAXから-1ひいてく感じ
  '.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する
 If Right(UCase(objShell.Windows(n - 1).FullName), 12) = "IEXPLORE.EXE" Then
 Set objIE = objShell.Windows(n - 1) 'n番目のウインドウ(FullNameがIEXPLORE.EXE)を代入
 Exit For '見つけたので、↑代入後、強制的にループを抜ける
 End If
 Next
 Set objShell = Nothing

'もし起動済みのIEが見つからなければ、新たに起動する
 If objIE Is Nothing Then  '上で見つけられたか?
 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
 End If
 objIE.Visible = True  '可視、Trueで見えるようにします。
 
'処理したいページを表示します。
 objIE.Navigate "http://www.kosho.or.jp/public/book/detailsearch.do"  '.Navigate メソッドで表示する。
 
'↑上記のページの表示が完了するまで待ちます。
 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
 DoEvents  '重いので嫌いな人居るけど。
 Wend
 
'ページが表示されたので、表示された文章に対して、処理を行います。
 objIE.Document.all("p_shomei").Value = bookname 'A列の値を 書名にセットする。
 
  '検索開始を押す
  'リンクのアンカーオブジェクトをクリックする
 Dim objFDOC As Object  'ドキュメントを保存する
 Set objFDOC = objIE.Document '代入別に代入しなくてもいいけど。

  'リンク情報からオブジェクトを探し.Clickする
 For n = 0 To objFDOC.Links.Length - 1 'リンク数分まわす
 Debug.Print objFDOC.Links(n).href 'デバックで表示する
  'リンク先のAタグの中(.InnerHTML)をチェックする(検索開始を探す)
 If InStr(objFDOC.Links(n).innerHTML, "検索開始") > 0 Then
 objFDOC.Links(n).Click  '.Clickでクリックしてみた
 Exit For  '見つかったので強制的にループを抜ける
 End If
 Next n
 
'データセット後にIEを前面にする方法がわからなかったので、とりあえず、Excelを最小化してごまかす
 Application.WindowState = xlMinimized  'excelの最小化
 
End Sub

テストの動画 http://www.youtube.com/watch?v=HNO4hq-KYas


今回作成したサンプルはOS:Windows XP IE8 Excel2003でテストしました。

http://d.hatena.ne.jp/ken3memo/files/Book1102.xls

[file:ken3memo:Book1102.xls]

です。(裸の.xlsなのでダウンロード時 警告出るので、そのまま開かないで保存してから使ってください)

※動作を確認してみてください。

完成するまでの下書きは http://d.hatena.ne.jp/ken3memo/20091102/1257102258 を見てください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ