Excelブックを開くマクロVBA|使いやすさも考慮して作ろう!

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น • 20

  • @naribarada
    @naribarada 10 หลายเดือนก่อน

    たいへん勉強になっております。ありがとうございます。

  • @Asobi_Asobi
    @Asobi_Asobi 2 ปีที่แล้ว

    先生VBAも楽々やっていていすごいです!
    参考にさせていただきます!

  • @aaaaaaaaa6563
    @aaaaaaaaa6563 ปีที่แล้ว

    質問です。
    book1,book2があったとします
    book1,book2は、両方とも開いた状態です
    book1で以下のマクロを作成します
    book2を閉じる
    book2を開く
    book2で以下のマクロを作成します
    book1のマクロを実行する
    book2にセル上にフォームでボタンを作成します。ボタンにbook2のマクロを設定します。ボタンを実行したときに以下の挙動になると考えてました。
    実行してるファイル自身が再起動という形になると思って作ったのですが、実行がbook2が閉じた時点で終了してしまいます。解決方法は、ありますか?

  • @yk9712
    @yk9712 2 ปีที่แล้ว +1

    いつも拝見しています
    質問します
    ワークブック1にかいたVBAを、新規で作成さしたワークブック2で動かすことはできますか?
    えーっ、つまり、VBAプロバティを他のブックに再利用は、できますか? 説明下手でスミマセン。

    • @macro-chan
      @macro-chan  2 ปีที่แล้ว +1

      基本的に、ブックを2つ同時に開いていればブック2を指定したVBAコードをブック1に作って実行できます。
      Workbooks(”Book2").Sheets(1).Range("A1") = "Hello"
      上記コードをBook1のVBAプロジェクトに書いて実行すればBook2のシート1のA1にHelloが入ります。
      とにかくどのオブジェクトを指しているのか?をコンピューターにわからせないといけないのです。
      Book2のVBAプロジェクトにコードを書くなら、
      Range("A1") = "Hello"
      だけでいいんですけど、あえてBook1のプロジェクトにコードを書くなら
      Workbooks(”Book2").Sheets(1).
      をつけてBook2を指定する必要があるというわけです。
      と言う意味では完全に再利用ということはできないので、少し工夫が必要だと思います。
      たとえば、Workbooks(”Book2")のBOOK2の文字列をInputBox関数で手入力できる形にするとかですね。
      Dim book As String
      book = InputBox("ブックを指定してね ")
      Workbooks(book).Sheets(1).Range("A1") = "Hell"
      そう言うことじゃない!!
      って場合はもしかしてアドインみたいに使いたいという質問ですかね・・・?
      上記の解説でやりたいことが違うのであれば、アドインの動画を見てみてください。
      th-cam.com/video/9ABIfi2znq0/w-d-xo.html
      簡単に言うと、1つのVBAプロジェクトで作ったプログラムを別のブックでも使える仕組みです。

  • @はなみやま-o3n
    @はなみやま-o3n ปีที่แล้ว

    とてもわかり易い解説ありがとうございます。勉强になります。

  • @神宮寺翼-i6e
    @神宮寺翼-i6e 3 ปีที่แล้ว +1

    こちらのファイルを開くは、よく使います。ただし、きちんと理解していなかったので、このように説明頂き嬉しいです!

    • @macro-chan
      @macro-chan  3 ปีที่แล้ว

      お役に立ててよかったです!

  • @167buy3
    @167buy3 3 ปีที่แล้ว +2

    ファイルが同じフォルダ内にあるファイルを開くときは、フォルダまでのパスがいらないということですが、フルパスを入力しなければ同一フォルダ内にあっても開きません。何が原因でしょうか?自分で調べれば良いのですが、調べ方が下手なのでご教示いただければ幸いです。バージョンがExcel2013を使用しているからでしょうか?
    よろしくお願い致します。

    • @macro-chan
      @macro-chan  3 ปีที่แล้ว +1

      カレントディレクトリが変わってしまったんだと思います。
      ChDir ActiveWorkbook.Path
      を最初の方に書いておけばOKです。まぁ本来これ書いたほうがそういったエラーが出ないので丁寧だと思います。

    • @167buy3
      @167buy3 3 ปีที่แล้ว

      返答ありがとうございます。
      ChDrive関数 の方を書いたら解消されました。この辺もう少し詳しく知りたいのですが、解説してもらえたりしますか?

    • @macro-chan
      @macro-chan  3 ปีที่แล้ว +2

      カレントディレクトリ(フォルダ)、カレントドライブとは現在操作対象になっているフォルダ、ドライブのことを指します。unixコマンドを勉強するとわかるかと思います。基本的には保存したマクロブックの場所がカレントドライブ・ディレクトリになるはずなんですが、何らかの操作でそれが変わったんだと思います。なので上記のようにChDirやChDriveを使うか基本的にフルパス指定にするのが丁寧です。

    • @167buy3
      @167buy3 3 ปีที่แล้ว

      丁寧なご返答本当にありがとうございました。unixコマンドについて少し勉強してみたいと思います。何らかの操作が原因なんですね、何かやらかしてるんでしょうね(苦笑)。

  • @chanoman1203
    @chanoman1203 3 ปีที่แล้ว +1

    activeworbookは、オブジェクトではなくプロパティなのですね?

    • @macro-chan
      @macro-chan  3 ปีที่แล้ว

      Workbookオブジェクトを返すプロパティです。

  • @アリス-g6y
    @アリス-g6y 3 ปีที่แล้ว +1

    分かりやすい説明です。
    ありがとう御座います。

  • @ikalog
    @ikalog 2 ปีที่แล้ว +2

    素晴らしいです。ありがとうございます。
    GetOpenFilenameメソッドの引数、拡張子(ワイルドカード)の書き方がようやく理解できました。
    機会がありましたら、正規表現を易しく教えて頂けるような動画を作って頂けるとありがたいです。

  • @TenTem
    @TenTem 3 ปีที่แล้ว +1

    ショートカット的に開けるのですね。
    処置する人間が複数居るとかで複数端末で使いたい時は良いかも。
    ーーー以下、長文です。ーーー
    あっ、PDF名を同じにしてデータ更新している者があるのでそれを開くように出来るかも。
    PDFで印刷時の確認でも、備品が減ってきたら発注出来るようにショートカットを設定するでも使えるのか。

  • @chanoman1203
    @chanoman1203 2 ปีที่แล้ว +1

    いつもこちらの動画で勉強させて頂いております。If book "False" ThenのFalsehをダブルクォーテーションでくくる理由をご教授いただけないでしょうか。

    • @macro-chan
      @macro-chan  2 ปีที่แล้ว

      String型なのでわかりやすく文字列を表す""を付けています。実際はつけなくても動きますが。