Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
「マクロなし.xlsx」ファイルを「マクロあり.xlsm」ファイルのマクロを使って「マクロなし.xlsx」で作業を行いたい。
投稿日時: 26/04/26 20:58:35
投稿者: hakutake

よろしくお願いいたします。
 
下記のことは可能でしょうか?・・・
 
「マクロあり.xlsm」のファイルにマクロがあります。
「マクロなし.xlsx」ファイルはマクロなし
「マクロなし.xlsx」ファイルを「マクロあり.xlsm」ファイルのマクロを使って「マクロなし.xlsx」で作業を行いたい。
・「マクロあり.xlsm」のファイルと「マクロなし.xlsx」ファイルは 同書式です。
 
理由:
会社で「マクロ有効ブック」ファイルを部署ごとのやり取りは禁止されております。
メール等での送付は基本「通常のエクセルブック」でおこないたいため・・・
 
・保存するときに、.xlsxですればいいのではとなるのですが、作業するのは.xlsxで作業としたいので・・
 
いろいろWeBで調べたのですが分からず投稿させてもらいました。
また、他にやりかたあれば併せてご教授をお願いします。
よろしくお願いいたします。
 

回答
投稿日時: 26/04/26 21:31:09
投稿者: 半平太

ちょっと具体的イメージが湧かないので、教えてください。
 
マクロで処理した後、マクロなしブックにして他部署に渡すとして、
何故、他部署でまたマクロ処理する必要があるのですか?

投稿日時: 26/04/27 03:48:24
投稿者: hakutake

半平太さま
ありがとうございまます。
他の部署は、4部署あります。
マクロファイルは、正しく入力したかチェックするコード等があるためにです。
報告を受けチェックに入力の間違等を他の部署でもやってもらうと
両方の稼働削減になるために、業務改善で提案を考えている次第です。
それと、私の担当内で最近VBAに興味を持ちこのような意見があったからです。
参考に、他の部署から報告を受けそれぞれチェックし、私の担当は他の会社に報告します。

回答
投稿日時: 26/04/27 10:03:09
投稿者: Suzu

引用:
・「マクロあり.xlsm」のファイルと「マクロなし.xlsx」ファイルは 同書式です。

 1. 同書式 である理由は何でしょうか?
 
引用:
・「マクロなし.xlsx」ファイルを「マクロあり.xlsm」ファイルのマクロを使って「マクロなし.xlsx」で作業を行いたい。

 2.  前半は
   マクロなし.xlsx ファイルのデータ(書式)を、マクロあり.xlsm ファイル 記載の マクロにて操作したい
   と読めるのですが、
   後半の「マクロなし.xlsx で作業を行いたい」 とは、どういう事でしょうか?
 
 3. マクロあり マクロなし ファイルは同書式との事なので ボタン等は配置されていないと思われます。
  マクロの起動は 「開発」-「マクロ」や、クイックアクセスツールバーにアイコンを配置してある
   という事でしょうか?
 
 4. 具体的な操作としては、
    ファイル「マクロあり.xlsm」を開き、マクロを実行すれば
    マクロ内で、ファイルパスが固定してある、「マクロなし.xlsx」を自動で開き
    マクロが実行される
   の流れで良いのでしょうか?
 
とりあえず、他のブックを操作するサンプルです。
 
ファイルあり.xlsm ファイル の標準モジュールに記載します。
 
Sub Sample()
  Const trgFile As String = "C:\DATA\TEST.xlsx"

  Dim wbk As Workbook
  Dim wst As Worksheet

  Set wbk = Workbooks.Open(trgFile)

  With wbk
    Set wst = .Worksheets("Sheet1")
    With wst
      With .Range("A1")
        .NumberFormatLocal = "yyyy/mm/dd"
        .Value2 = #4/27/2026#
      End With

      .Range("A2").Value2 = 1

      With .Range("A3")
        .FormulaLocal = "=A1+A2"
        .NumberFormatLocal = "m/d"
      End With
    End With
    .Save
    .Saved = True
    .Close
  End With

  Set wst = Nothing
  Set wbk = Nothing
End Sub

 
 
1、3、4 次第ですが、個人マクロファイルに記載しておき
クイックアクセスツールバーに、起動用ボタンを配置するのもアリかと。

投稿日時: 26/04/27 13:32:15
投稿者: hakutake

Suzuさま
 
ありがとうございます。
 
Suzuさま・半平太さまの貴重な意見を整理してみました。
 
「マクロあり.xlsm」は入力不可という前提でしたが、「マクロあり.xlsm」で作業をして、保存するときに「マクロなし.xlsx」と両方保存すればいいのではないかと思うようになりました。
 
会社で「マクロ有効ブック」ファイルを部署ごとのやり取りは禁止されております。
メール等での送付は基本「通常のエクセルブック」でおこないたいため投稿してみました。
 
もし他にもアドバイス等があれば、ぜひコメントください!よろしくお願いいたします。
 
 
 1. 同書式 である理由は何でしょうか?
⇒報告用のファイルを動かすための_「マクロあり.xlsm」のファイルと報告用「マクロなし.xlsx」を分けるため
  実際に入力するのは、報告用_「マクロなし.xlsx」
 
 2.  前半はマクロなし.xlsx ファイルのデータ(書式)を、マクロあり.xlsm ファイル 記載の マクロにて操作したいと読めるのですが、
   後半の「マクロなし.xlsx で作業を行いたい」 とは、どういう事でしょうか?
⇒書き方が悪くすみません・・・後半の方です
 
3.マクロの起動は 「開発」-「マクロ」や、クイックアクセスツールバーにアイコンを配置してある
   という事でしょうか?
⇒配置していません。
 
4. 具体的な操作としては、・・・
⇒はい
 
 
Suzuさま_ありがとうございます。
サンプルデータは、必要な改善点や新しいアイデアが見えてくるかもしれませんので、活用してみます。

回答
投稿日時: 26/04/27 19:45:43
投稿者: 半平太

>「マクロあり.xlsm」は入力不可という前提でしたが、
 
私も、その前提の方がいいと思っている者です。
 
ただ、会社の「マクロ有効ブックのやり取り禁止」の真意が分からないと
アイデアが出ません。
 
基本、社員が作ったマクロに疑念を持っているのだろうとは思います。
でも、「各部署が独自に作成したマクロを当該部署内だけで使う限り問題視しない」
と言うことだと、なんか首尾一貫しない気がします。
 
その辺の議論は置くとするなら、
他部署にも同じ様なマクロを作って貰えばいいんじゃないですか?
  二度手間な開発なので、馬鹿げているとは思いますけど。。
  なお、マクロをテキストベースで他部署に渡すことは可能です。
  (それが禁止ルールに抵触するかどうか、こちらでは分かりませんが。)
 
別の方向から考えると、
(どんなマクロか分からないので、断言できませんけど)
入力データチェック程度のマクロであるとするならばですが、
数式・条件付き書式などを駆使すれば、それで代替可能な気がします。
Microsoft365は強力な関数が増えていますので。

投稿日時: 26/04/28 08:50:46
投稿者: hakutake

半平太さま
ご意見ありがとうございます。
 
ご指摘のとおり、「マクロ有効ブックのやり取り禁止」という会社方針の真意が明確でないため、解決策を検討しづらい、という点は私も同感です。
 
セキュリティや保守性の観点から、社員作成マクロ全般に懸念を持っている可能性は高い一方で、部署内利用のみは黙認されている、という状況には確かに首尾一貫しない印象があります。
ただ、この議論を深掘りすると制度全体の話になってしまうため、当件については一旦切り分け、現実的な対応策を優先したいと考えています。
ご提案いただいた通り、
 
・他部署で同等機能のマクロを個別に作成してもらう
・あるいはマクロのロジックをテキストベースで共有する・・・実行予定
 
という選択肢は、ルールに抵触しないのであれば成立するとは思いますが、仰るとおり二度手間であり、保守性・品質の面でも課題が残ると感じています。
 
そのため別案としてご指摘いただいた、
数式・条件付き書式・Microsoft 365 の新関数を活用した代替
については、同時に検討しておりましたので、今回のマクロは主に入力チェックや制御系が中心であり、その範囲であればマクロレスでの実現可能性は十分あると思われます。
 
まずは、マクロで実現している具体的なチェック内容の洗い出し関数・条件付き書式等で代替可能かの切り分けを行い、その結果を踏まえて最適な形を検討できればと考えています。
 
引き続きご相談させていただくこともあるかと思いますので、その際はよろしくお願いいたします。