データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ
> sk.exeさんの長いコードは、何を意味するものでしょうか
お望みの「table.xlsのPPSシートに記入しているデータを共有フォルダーにある
構築.xlsxの貼付シートの最終行に貼り付ける」コードのサンプルです。
> 最初にも記載させて頂いたようにVBAの初心者になります。> 各コードの意味も理解不十分であるため 噛み砕いて頂けると幸いです。
まず「 Takahashi Tadayoshi (takatada72) さんが Excel にしてほしいこと」を
より具体的に(抽象的ではなく、かつ情報に過不足のない形で)明示されることを
お奨めします。
それが出来なければ、相手が人間だろうが ChatGPT だろうが、
あなたが本当に望む適切な回答を得ることは難しいでしょう。
例えば件の moug のスレッドにおいては
> 毎回、コピーする範囲を選択するので、そちらを簡略化できないか
というのがそもそものご質問の主旨であると認識していますが、
> 下記のコードでは、構築.xlsxのファイルを開いておかないと、> エラーになるため、手動で開いて置くのですが、手動で開かなくても> データの貼付けができるようになると嬉しいです。
もし「**コピーする範囲を含むブック」や「出力先となる範囲を含むブック」がその時点で開いていても、開いていなくても、**データが貼り付けされるようにしたい
という要求が含まれているならば、ここでの「コピーする範囲」が
具体的に
・どのフォルダに保存されている
・どんな名前のブックの
・どんな名前のワークシートの
・どこからどこまでの範囲
であるのかが判らなければ、そのブックを開いたり、参照させたりしようがなく、
当然 Excel に対して適切な命令を与えられるわけがありません。
また、同スレッドにおいて私は、そのコピー元となるブックについて
> それがどのブックのどのワークシートに含まれるセル範囲なのか、> 具体的に明記されることをお奨めします。 > Table.xlsx はどこに保存されているのでしょうか。
とその旨を明記するように提案しましたが、それに対しては
具体的な説明がなく、結局「コピーする範囲」についての認識の
すり合わせが充分に為されないまま、他の回答者との対話が
平行線となって takatada72 さんご自身の判断により
上記のスレッドは閉じられました。
ただその一見不毛に見えるやりとりの中で、
23/07/20 10:18:13 の WinArrow さんの回答に対し、
23/07/20 10:57:42 に takatada72 さんは
次のように回答されています。
> コードのトップにWinArrowさんのコードを貼り付けて実行しました。> 結果、下記のような表示がイミディエイトウインドウに表示されました。> 「構築.xlsx」の表示は、されませんでした。「構築.xlsx」は、閉じて、マクロを> 実行しております。> C:\Users\●●●●●●●\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB> C:\Users\●●●●●●●\Desktop\Table.xlsx
イミディエイトウインドウに出力された以上の結果から、
ここでの「コピーする範囲」とは、デスクトップ上に保存されている
「Table.xlsx」という名前のブックの、「PPS」という名前の
ワークシートの A2 セルから N 列の最終行までのセル範囲である
と推定されます。
以上の点を踏まえて、私の例示したコードではその実行環境における
デスクトップのフォルダパスを取得し、更にコピー元ブックのファイル名( Table.xlsx )を
文字列結合した結果を「コピー元ブックのフルパス」として扱い、コピー元ブックが
既に Excel 上で開かれていればそのブックを参照し、まだ開かれていなければ
そのブックを Excel で開いて参照する、という形を取っています。
出力先であるブック( 構築.xlsx )についても同じ方法で参照を取得していますが、
そのブックが保存されているネットワーク上のコンピュータの共有フォルダの
本来のパスが不明であるため、その部分に関しては仮のパスを記述しています。
> '出力先ブックのパスの指定> '(コンピュータ名、共有フォルダ名等は適宜修正すること)> strDestinationBookPath = "\ComputerName\SharedFolderName\構築.xlsx"
MSDN フォーラムの方でも指摘されていますが、少なくとも
"\共有\構築.xlsx" というのは UNC パスとして成り立っていません。
正確なパスを記述できなければ、結局同じやりとりの繰り返しになるだけでしょう。