• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル名を変数として取り扱いたい)

ファイル名を変数として取り扱う方法は?

このQ&Aのポイント
  • ファイル名が変更されても正常に動作するようにするためには、ファイル名を変数として取り扱う方法があります。
  • A.XLSにB.XLS、C.XLSのシートを取り込む処理をしている際、A.XLSのファイル名が変更されても動作するようにするには、マクロ内でファイル名を変数に格納して使用する必要があります。
  • ファイルの取り込み処理では、指定したフォルダ内のすべてのファイルを取得し、拡張子が\"xls\"でかつファイル名が"A"でないものに対して処理を行います。ファイル名を変数として取り扱うことで、A.XLSのファイル名が変更されても正常に動作するようにすることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >マクロはA.XLSで起動、処理しています。 コードが良く分からないですね。マクロというのは、VBAのことでしょうか? そのコードで、まともに動くのでしょうか?めちゃくちゃな内容のようにしか思えないですが。これは、あくまでも、VBAです。以下のコードは、少し、曖昧さを残しています。Copyするものは、Worksheetであって、コピーされる側は、Sheetの数に対して行われています。 '標準モジュールに登録してください。登録したブックがベースになります。 Sub Test()   Dim MyFolder As String   Dim fName As String   Dim sh As Variant   MyFolder = ThisWorkbook.Path & "\"   fName = Dir(MyFolder & "*.xls")   On Error Resume Next   Do While fName <> ""     If fName <> ThisWorkbook.Name Then       With Workbooks.Open(MyFolder & fName)         For Each sh In .Worksheets           sh.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)         Next sh         .Close False       End With     End If     fName = Dir()   Loop   On Error GoTo 0 End Sub   

pin3891227
質問者

お礼

ソースコードをコピーしたのですが不要な¥が表示されてしまいました。にもかかわらず実現したい処理をご理解いただき、かつコードもお示しいただきたいへん感謝いたします。 ご指導いただいたコードそのままで所望の動作になることを確認いたしました。 本当にありがとうございました。

その他の回答 (2)

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.2

pin3891227さん、こんにちは 2行目のコードで「A.XLS」以外なら処理続行と書かれているのでA.XLSファイルが処理されて困るとい問題がでるのでは?

pin3891227
質問者

お礼

A.XLSをベースに処理を行うのでA.XLSファイル以外を処理するということです。 わかりにくいコードで申し訳ありませんでした。 Wendy02(回答No3)さんのご指導で所望の動作を実現することができました。 ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>A.XLSのファイル名を変更されても動くようにできるのでしょうか。 ですので、Thisworkbookで作成されては如何でしょうか。 試しに以下のコード実行してみてください。 Sub Macro1() MsgBox ThisWorkbook.FullName MsgBox ThisWorkbook.Name MsgBox ThisWorkbook.Path End Sub

pin3891227
質問者

お礼

うまく説明できず大変申し訳ありませんでした。 また、わかりにくいコードで申し訳ありませんでした。 Wendy02(回答No3)さんのご指導で所望の動作を実現することができました。 ありがとうございました

関連するQ&A

専門家に質問してみよう