• ベストアンサー

エクセルマクロで外部ファイルを開きたい

DOUGLAS_の回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.22

>2グループ以降に移るとき、 >A1へジャンプして終了  以上2点につきまして、下記のトコロを書き換えてください。 -------------------------------- '//変数の宣言 のトコロに、  Dim actRow As Long    '初期アクティブ行  Dim nextRow As Long    '次期アクティブ行 を追加。 ----------------  MsgBox "スタート行をアクティブ にしてください。"  Range("R" & Selection.Row).Select の行を削除。 ---------------- '//グループ ごとの繰り返し作業開始  Do の後に、 '//次の「スタート位置」を選択  Range("R" & Selection.Row).Select  actRow = ActiveCell.Row  Range("R:R").Find(What:="MB", After:=ActiveCell, LookIn:=xlValues, LookAt _   :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _   False, MatchByte:=False, SearchFormat:=False).Select  If ActiveCell.Row < actRow Then Range("A1").Select: Exit Sub  nextRow = Range("R:R").Find(What:="MB", After:=ActiveCell, LookIn:=xlValues, LookAt _   :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _   False, MatchByte:=False, SearchFormat:=False).Row を追加。 ----------------   Set rng = Range("M" & ActiveCell.Row, "R" & ActiveCell.End(xlDown).Row) を   Set rng = Range("M" & ActiveCell.Row, "R" & nextRow - 1) に置き換える。 ---------------- '//次の「スタート位置」を選択   Selection.End(xlDown).End(xlDown).Select を削除。 ---------------- End Sub の前に、  Range("A1").Select を追加。 --------------------------------  以上で、 1)アクティブ行から下方向に向かって、R列内で最初に「MB」の現れる セル が スタート 位置になります。  以下、わざわざ「M列~R列」の データ を削除しなくても、次の「MB」が入力された R列 の セル が、次の スタート 位置になります。  つまり、K列 に「A」と入力するだけで、その行が開始行になります。 2)マクロ終了後は A1 セル が アクティブ になります。  ただし、「ファイル名の入力」ダイアログ を キャンセル したときと、「EmEditor での作業が終わったら OK」の メッセージ を キャンセル したときには、スタート 位置 で終了します。 ================================ >当事者同士のみのローカル的なやりとりで あるが故に、私的には、結構、好きな回答を書けているようにも思えます。  他者が参入してくると、却って noro6857 さんご自身も、複数の回答者相手に考えなければならなくなり、頭の数がそれだけ必要になるように存じますが、いかがでしょうか? >サイトに気が引ける  私は、「この質疑応答を他の方がご覧になって、何かの ヒント になれば」と思って、そういう スタンス で、常々、回答しているつもりです。  なればこそ、 >このQ&Aは他の方にも公開され使える方にも役立てる のであって、むしろ、中途半端な終わり方をするよりは、「答えが出た」というトコロで終わるべきかと存じますが、いかがでしょうか? -------------------------------- >次の質問を別トビにしたい  「次の質問」が何を指すのかは存じませんが、コード は、ほぼ出来上がっておりますので、今しばらくお待ちください。  次の回答が最後になりますように。 (^∧^)

noro6857
質問者

お礼

>本当のトコロはどうなんでしょうか? どこかのぶれる首相みたいですね。すみません。 >10種類くらい/特定文字の種類が20通り 正確に数えていないのでアバウトで書いたのですが、種類としては10種類くらい 特定文字で区分すると20通りという意味なのですが、これも違っているかもしれません。 >連続しなくてすむ方法もあったほうがよさそうな気がします。 >(時々データ1に付する「1」を間違えて、 >タイトルから付してしまうことがあるからです) これは、順列数字(L列)をR列のように付するとき、 タイトルつまり■の欄の本来消すべき順列数字をうっかり消し忘れ、残っていると そこが1となって、肝心のデータ1行目が2から始まってしまうということです。 しばしばあとから気がつく時があります。 (R)2.A1○○○(B1△△) ただし、今回「キャンセル」を入れていただいたので、この問題は解決しました。 >プルダウン方式マクロで対応することは可能です これは自分で対応可という意味でなく、プルダウンメニューの中にワード候補を いれるように整理できるという意味ですが、 作成方法がQ&Aのやりとりにそぐわないということであるので撤回します あと、応用でお聞きしておきたいのですが、収集列範囲を増やしたい場合 コード中の  Set rng = Range("M" & ActiveCell.Row, "R" & ActiveCell.End の部分をM~Sのようにすればいいのでしょうか。他にも関連記述がありますか? ということでここまでをほかのところに書きかけていたらこのご回答が入りましたので、回答場所が 不揃いになりますがあわせてご返事させていただきます。 >他者が参入してくると 多分このやりとりをみてすると他者が参入してくる余地はないと思いますが 途中でほかの案が浮上してきたりするとお説のとおり混乱します。 が、そのために他者の書き込みを封じてはいけないのかなと自戒しています。 通しで対応していただいているのでとても助かっているのですが。 次の質問というのは追記案が1件落着となったところで、 次のVBA取り込み案を別のトビに分けようかなと考えたのです。 もしかしたらVBAで更に20回くらいやりとりをすることになるのかなと思ったのですが 関連で分割するとわかりにくくなるのではあればこのまま続けさせていただきます。 勝手なことを述べて申し訳ありません。

noro6857
質問者

補足

修正した内容について動作結果をご報告します。 ※ 1グループでマクロを実行すると、2グループめのタイトル追記メニューと内容になります。 たぶん最初のグループの1行めからスタートさせると、 次のMB(すなわち2グループ)を拾ってしまうのではないかと感じます。 2グループめが終わって次のOKを押すと次のようなメッセージが出ました 実行時エラー2147221040(800401d0) DateObjectGetText Openclipboardに失敗しました。 デバックを見ると次の部分がハイライトされていました。 //ファイル名 の入力 strData = .GetText 今回の修正、追記のしかたが間違ったのかもしれませんが、確認はしたつもりです。

関連するQ&A

  • エクセルの終了マクロ

    エクセルのマクロの記述で、 処理が終われば、マクロを記述しているエクセル自体を終了(ワークブックではなくアプリケーション)させたいのですが、できるでしょうか?

  • エクセルのマクロを記述したファイルを呼び出して実行

    エクセルのマクロを記述した外部ファイルを作成しておいて メイン(普通)のマクロの実行中にそのファイルを読み込んで、 マクロを実行させることは可能でしょうか? 可能なら方法をお願いします。

  • Excelファイルがマクロを含むか調べるには?

    Excell2003で作っていた多量のExcelファイルを、Excel2010で動かす事が必要になってきました。 で、指定フォルダにある複数のExcelファイルが、マクロを含んでいるかどうかを調べたいのです。 加えて、マクロを含んだExcelファイルのファイル名をリストアップしたいのですが、 どの様にしたら良いでしょうか? 適切なマクロなりともご教授いただきたく、よろしくお願いします。

  • エクセルのマクロで外部ファイルを開く

    セルに入力した内容をファイルネームとして外部ファイルを開きたいのですが どうすればいいのかわかりません。 具体的には 1.外部ファイルはFDで供給されます。 2.FDに入れられるファイル名は毎日かわります。 3.ファイル名は固定された名称+日付のフォーマットです。(例:file0802) 4.やろうとしているのはA1に\"file\"、B1にtoday関数で日付を入力して   A1+B1をファイル名としマクロよりそのファイル名でFDのファイルを  開きたい。 5.開いたファイルの一部をコピーしてHDD上にあるエクセルのファイルに  ペースト、このファイルにマクロを組み込みたいのです。 help等をいろいろ見たのですがこの内容に関するものが見つけられません。 もしかしたら出来ないのでしょうか? よろしくお願いします。

  • Excelで外部ファイルの取り込み(データの更新)をマクロ化したい

    C:\data のdataフォルダの中に「20060709.dat」「20060710.dat」「20060711.dat」・・・というようにファイル名に日付が入ったファイルがあります。 例えば、(データ)→(外部データの取り込み)で"sheet2"に「20060709.dat」を読み込んでいるとしします。 この時に"sheet1”のセルA1に「20060710」と入力してマクロボタンをクリックすると"sheet2"に「20060710.dat」を(データ)→(データの更新)で読み込むというような作業をマクロで自動化することは可能なのでしょうか? 可能であれば教えて頂きたいのですが。どうぞよろしくお願いします。 ちなみにマクロに関しては(自動記録)で作ったマクロを少しいじる程度の知識しかありません。Excel2000を使用しています。 以上、どうぞよろしくお願い致します。

  • 秀丸のマクロでファイルを新規秀丸にコピーしたい

    王次郎っす お疲れさまです 秀丸エディタのマクロ関数を使用してファイルの内容を新規秀丸にコピーしたいです クリップボードを使わずにコピーできる方法があったら教えてください 例えば、「memo.txt」というテキストファイルを開いた状態でマクロを実行した場合に 新規秀丸を作成し(newfile)、「memo.txt」の内容を新規秀丸にコピーしたいです。 クリップボードを使用すればできますが(copy⇒paste)、それだとクリップボードの内容が 消えてしまうのでクリップボードは使いたくないです。 よろしくお願いします

  • Html(表)のExcel出力

    現在、JavaScriptで以下の処理を行い、Htmlで書かれた 表をExcelで表示しています。 1.Htmlをクリップボードにコピー 2.new ActiveXObject("Excel.Application")でExcelインスタンスを 生成 3.Workbooks.Openでワークブックをオープン 4.オープンしたワークブックにクリップボードのHtmlを貼り付けて表示 以上の処理を、クリップボードを経由せず、Htmlで書かれた表をExcelに 表示することはできますか? お心当たりのある方はご教示お願いします。

  • EXCELで外部ファイルを参照したい

    EXCELで外部のテキストファイルを相対アドレスで参照したいのですが、マクロでないとできないのでしょうか。 たとえば、 他のファイルを参照するのは、「データ」→「外部データの取り込み」でできるのですが、特定のアドレスかファイル(絶対アドレス)しかできません。 (例えば同じフォルダ内にあるa.txtを参照したいときは、./a.txtみたいに。) どなたかわかる方、教えてください。

  • Html(表)のExcel出力

    現在、JavaScriptで以下の処理を行い、Htmlで書かれた 表(<table>タグで囲まれている)をExcelで表示しています。 1.Htmlをクリップボードにコピー 2.new ActiveXObject("Excel.Application")でExcelインスタンスを 生成 3.Workbooks.Openでワークブックをオープン 4.オープンしたワークブックにクリップボードのHtmlを貼り付けて表示 以上の処理を、クリップボードを経由せず、Htmlで書かれた表をExcelに 表示することはできますか? お心当たりのある方はご教示お願いします。

  • エクセルで個人用マクロを移すには

    エクセル2002で使用していた個人用マクロを、他のPCにインストールしたばかりのエクセル2003で使えるようにするには、どういう手順をとればいいのでしょうか。 エクセル2002がある方のPCの、 C:\Documents and Settings\User\Application Data \Microsoft\Excel\XLSTART\PERSONAL.XLS を、 エクセル2003があるPCのXLSTARTフォルダにコピーしてみたのですが、エクセルファイルを開いてVBエディタを起動しても、個人用マクロの標準モジュールが表示されないのですが。