和風スパゲティのレシピ

日本語でコーディングするExcelVBA

2023-03-01から1ヶ月間の記事一覧

3/18(土)20:00~ VBA勉強会「配列入門!Array&Collection&Dictionary欲張りセット」

3/18(土)20:00~ Zoom勉強会に登壇します。「配列入門!Array&Collection&Dictionary欲張りセット」と題し、まだ配列を使ったことがない方、CollectionやDictionaryに触れてみたい方、3つの特長と使い分けポイントを整理したい方に向けた講座を行います。

破損したブックを修復して開く(CorruptLoad)

破損したブックを修復して開くには、Workbooks.OpenメソッドでCorruptload:=xlRepairFileを指定すればいいのですが、これは破損していないブックも修復済みにしてしまうため、まずは普通に開く→失敗したら修復という手順を踏む必要があります。

読取専用の推奨を無視して書込権限でブックを開く

ブックの読取専用推奨メッセージを無視して書き込み権限で開きたい場合は、Workbook.OpenメソッドのIgnoreReadOnlyRecommendedをTrueにすればOKです。DisplayAlerts=False、ReadOnly:=Falseではいずれも読取専用になるためご注意ください。

重複しないようファイル名に連番を付与する関数

ファイルを新規保存したりコピー・移動する際に、既存ファイルを上書きしないよう連番を付与するコードは関数化しておくと便利です。ファイルが存在しなくなるまでiを増やし、ファイルベース名 & (i) & 拡張子を結果値として返すことで実装できます。

フォルダを統合する(同名のフォルダに移動する)

同じ名前のフォルダがある場所にフォルダを移動すると、手作業であればフォルダを統合することができます。しかしVBAにはその機能がないため、フォルダ内の全ファイルを判定しながら移動していき、最後に元フォルダを削除する必要があります。

NameとFSO.MoveFolderの違い

ファイルを移動するNameステートメントとFileSystemObject.MoveFolderメソッドの違いを解説します。どちらも2つのパスを受け取ってファイルを移動します。MoveFolderのみワイルドカード*による一括移動ができる点が一番大きな違いです。