- ベストアンサー
ファイル名を変数として取り扱う方法は?
- ファイル名が変更されても正常に動作するようにするためには、ファイル名を変数として取り扱う方法があります。
- A.XLSにB.XLS、C.XLSのシートを取り込む処理をしている際、A.XLSのファイル名が変更されても動作するようにするには、マクロ内でファイル名を変数に格納して使用する必要があります。
- ファイルの取り込み処理では、指定したフォルダ内のすべてのファイルを取得し、拡張子が\"xls\"でかつファイル名が"A"でないものに対して処理を行います。ファイル名を変数として取り扱うことで、A.XLSのファイル名が変更されても正常に動作するようにすることができます。
- みんなの回答 (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
その他の回答 (2)
- A88No8
- ベストアンサー率52% (836/1606)
pin3891227さん、こんにちは 2行目のコードで「A.XLS」以外なら処理続行と書かれているのでA.XLSファイルが処理されて困るとい問題がでるのでは?
お礼
A.XLSをベースに処理を行うのでA.XLSファイル以外を処理するということです。 わかりにくいコードで申し訳ありませんでした。 Wendy02(回答No3)さんのご指導で所望の動作を実現することができました。 ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
>A.XLSのファイル名を変更されても動くようにできるのでしょうか。 ですので、Thisworkbookで作成されては如何でしょうか。 試しに以下のコード実行してみてください。 Sub Macro1() MsgBox ThisWorkbook.FullName MsgBox ThisWorkbook.Name MsgBox ThisWorkbook.Path End Sub
お礼
うまく説明できず大変申し訳ありませんでした。 また、わかりにくいコードで申し訳ありませんでした。 Wendy02(回答No3)さんのご指導で所望の動作を実現することができました。 ありがとうございました
お礼
ソースコードをコピーしたのですが不要な¥が表示されてしまいました。にもかかわらず実現したい処理をご理解いただき、かつコードもお示しいただきたいへん感謝いたします。 ご指導いただいたコードそのままで所望の動作になることを確認いたしました。 本当にありがとうございました。