- ベストアンサー
エクセルのマクロでこんな事って出来ますか?
エクセルのマクロの事で質問です。 例えば エクセルには A1氏名,B1住所,C1TEL があったとして、マクロを使って次のフォーム(エクセルではない別の物)に貼り付ける事は可能でしょうか? 1・氏名を記入 「・・・・・」 2・住所を記入 「・・・・・」 3・TELを記入 「・・・・・」 ちなみに私のエクセルの知識はあまりなく、試しにマクロの記録を使ってやってみたのですが、全くの失敗でした。 そこで、皆様のお力をお借りしたく質問をしています。 よろしくお願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
FFFtp のテキストフィールドへの入力ならば下記回答で紹介された UWSC で実現可能です。以下は、サンプルです。 siraku さんの適用したいソフトウェアでも同様の方式が適用できるかどうか切り分けてみてください。適用可ならば後はエクセルブックのデータを読み込む手続きを考えればよいでしょう。UWSC 掲示板 (参考URL) やこちらにも質問が投函されていますので検索して参考にしてください。 dim wid; message("1. FFFtpを起動します..."); EXEC("C:\Program Files\ffftp\FFFTP.exe"); message("2. 新規ホストボタンを押下します..."); wid = GETID("ホスト一覧"); if wid = -1 then terminate("ホスト一覧ウインドウが見つかりませんでした。") CLKITEM(wid, "新規ホスト"); // 新規ホストボタンを押下する wid = GETID("ホストの設定"); if wid = -1 then terminate("ホストの設定ウインドウが見つかりませんでした。") message("3. 各フィールドを設定します..."); SENDSTR(wid, "EXAMPLE dot com", 1); // "ホストの設定名(T)" SENDSTR(wid, "www.example.com", 2); // "ホスト名(アドレス)(N)" SENDSTR(wid, "anonymous", 3); // "ユーザ名(U)" CLKITEM(wid, "anonymous", CLK_BTN); // "anonymous" SENDSTR(wid, "user@example.com", 4); // "パスワード/パスフレーズ(P)" SENDSTR(wid, "/", 5); // "ローカルの初期フォルダ(L)" SENDSTR(wid, "/", 6); // "ホストの初期フォルダ(R)" message("4. 入力を終えました! (UWSC スクリプトを終了します...)"); procedure terminate(s) FUKIDASI("処理を中断します (Exit...)"); SLEEP(3); EXITEXIT; fend procedure message(s) FUKIDASI(s); SLEEP(1); fend
その他の回答 (8)
- imogasi
- ベストアンサー率27% (4737/17069)
昨日今日のマクロの記録を始めた人が、こんなことが出来るなら誰も苦労しません。 ・オフィスソフトでも異種のソフト ・オフィス外の一般ソフト と連携をとるのは、難しいのです。 そういう仕組みを相手のソフトが作るのは難しい(手数がかかる、必要性がそんなに期待できない)からです。 エクセルなどにマクロ・VBAがあることが、むしろ例外です。 ーー ただ キーボードから入力した風に装い(Sendkeyのような)そのソフトの入力画面にデータを送る手もありますが、スピードは遅いとか、文字コード以外のものは送れないです。 もうひとつ、データの受け取る側の状態がつかめないと、うまくいかない場合があるが(例えば特別な事情でエラーが出たので、それに応答するキーインが必要で、通常の一本調子と違うそのデータの送り方を採ら無いとないといけないが、相手はエラーが起こったことはプログラム的に判るように返してこない。(昔は画面のデータがある記憶域がわかっていて、ある会社はこれらを対処するため画面インターフェイスというのを開発していた。) ーー 良く似た発想で UWSCというソフトがある。 http://www.uwsc.info/ こういう考え方だと質問に近いことが出来るかもしれない(確信なし) ーー たまにCSVファイルでデータ受け渡しが出来るソフトがあるが、基礎的なデータ(住所録など良くある)に限られ、ある特定の画面にデータをCSVで送るなどはまず不可能でしょう。
- okormazd
- ベストアンサー率50% (1224/2412)
>ReturnValue = Shell("C:\Program Files\Internet Explorer\iexplore.exe ?http://www.google.co.jp/",? 1) ' ie googleを実行します。 ハイパーリンクになっているのはこのソフトが勝手にやっていることで、私がしているのではありません。 で、 これをコピー/ペーストするときに「文字化け」してるかもしれませんので確認してください。 それから、 iexplore.exeが、コードのPathにあることと、googleが起動できることが前提になっています。 ReturnValue = Shell("C:\Program Files\Internet Explorer\iexplore.exe http://www.google.co.jp/", 1) ' ie googleを実行します。
- okormazd
- ベストアンサー率50% (1224/2412)
>いろいろありがとうございます。 >今、試したところエラーで失敗しました。 >どうすれば・・・? こういう書き方はないでしょう。どんなエラーかわからないのですか。 これではどうしようもありません。
- okormazd
- ベストアンサー率50% (1224/2412)
End Sub が抜けてましたので追加してください。
お礼
いろいろありがとうございます。 今、試したところエラーで失敗しました。 どうすれば・・・?
- okormazd
- ベストアンサー率50% (1224/2412)
たとえば、 excelのセルのデータをgoogleに渡して検索を実行させます。 sendkeysはそのままではうまく渡せない日本語文字があるので、コピー/ペーストを使っています。 sheet(1)のJ4からJ7まで、適当なデータを入れてください。 テストに使ったデータがコードの中に書いてあります。 Sub google() Dim ReturnValue, i ' 日本語 ' アンコールワット ' ワシントン ' sendkeys ThisWorkbook.Activate For i = 1 To 4 AppActivate "Microsoft Excel" SendKeys "{ESC}", True Sheets(1).Cells(i + 3, 10).Select SendKeys "^c", True ReturnValue = Shell("C:\Program Files\Internet Explorer\iexplore.exe http://www.google.co.jp/", 1) ' ie googleを実行します。 Application.Wait (Now + TimeValue("0:00:05")) AppActivate ReturnValue SendKeys "^v", True Application.Wait (Now + TimeValue("0:00:02")) SendKeys "{ENTER}", True Application.Wait (Now + TimeValue("0:00:05")) Next
- okormazd
- ベストアンサー率50% (1224/2412)
相手がどのようなソフトかわからないので、はっきりとはいえませんが、 相手がwindowsソフトなら、VBAで "sendkeys" を使ってデータを渡せば可能なのではないですか。
お礼
>相手がwindowsソフトなら、VBAで "sendkeys" を使ってデータを渡せば可能なのではないですか。 相手はwindowsソフトになります。 "sendkeys"を使ってデータを渡す事って難しいのでしょうか?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 例えば、Basp21 なら、簡単に、FTP の制御が簡単です。 http://www.hi-ho.ne.jp/babaq/basp21f.html それ以外は、そういう仕様を持っていなければ出来ませんね。
- marbin
- ベストアンサー率27% (636/2290)
>エクセルではない別の物 どのようなものかによると思います。 提示できませんか?
補足
説明不足で申し訳ありません。 それは、エクセルとは、全く関係ないあるソフトなのですが、入力フォーム画面で役立てればいいと思っています。 例えて言うなら・・ FFFTPの新規ホスト(ホストの設定)で入力するときの場合。 エクセルに A1ホストの設定名 B1ホスト名 C1パスワード って感じで入力しておいて、マクロを実行してホストの設定名、ホスト名、パスワードを入力できるような仕組み。 あくまでもこれは例えばの話です。これが出来るようになればあらゆるところで活用できるようになると思います。 素人感覚で申し訳ありませんが、このような仕組み作りって可能でしょうか?
補足
すいませんでした。 コンパイルエラー 構文エラー と表示され 「ReturnValue = Shell("C:\Program Files\Internet Explorer\iexplore.exe ?http://www.google.co.jp/",? 1) ' ie googleを実行します。」 この部分が選択されました。