ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA(ファイルとフォルダの操作)

VBA ダイアログよりパスを取得する(FileDialogオブジェクト)

■キーワード ダイアログ ファイルパス フォルダパス ※参照設定で「Microsoft Office XX.X Object Library」(XXX.X はバージョン番号)への参照を有効に設定する。 【ファイルを参照するダイアログボックスを表示する場合】 Sub selectFilePath() Dim target…

VBA デバッグ

■ステップイン・ステップオーバー・ステップアウトの意味など ※「カーソル行の前まで実行」はVBEのデバッグ→「カーソル行の前まで実行」を選択

VBA 特定の名前のブックが開かれているか確認する

Sub Sample() Dim myChkBook As Workbook On Error GoTo ErrHdl Set myChkBook = Workbooks("Test.xls") MsgBox "開かれています。" Exit Sub ErrHdl: MsgBox "開かれていません。" End Sub ■ファンクション化する場合 ・ファンクションプロシージャ Functio…

VBA フォルダの存在確認(FileSystemObject)

■呼び出し先プロシージャ Sub test() Dim folderPath As String Dim Result As Boolean folderPath = "C:\Users\デスクトップ\テスト\テストフォルダ" If IsExistsDir(folderPath) Then MsgBox "フォルダは存在します" Else MsgBox "フォルダは存在しません"…

UTF-8形式のテキストファイルを読み込んで変数に格納

■以下のようなUTF-8形式のテキストファイルを読み込んで変数に格納 Sub readUtfFile() Dim buf As String, Target As String Target = "C:\Users\デスクトップ\UTFデータ.csv" With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile Ta…

ダイアログボックスよりファイルパス取得またはフォルダパス取得

■以下のコードはファイルパスを取得するコード Set objDialog = Application.FileDialog(msoFileDialogFilePicker) を Set objDialog = Application.FileDialog(msoFileDialogFolderPicker) に変更すればフォルダパスが取得できる Sub getFilePath() Dim obj…

指定したフォルダ内にサブフォルダを一括作成する

■ExcelのB列3行目以降に記載したフォルダ名で親フォルダ内にサブフォルダを一括作成①ExcelのB列3行目以降に作成したいサブフォルダのフォルダ名を入力しておく。 ②ファイルダイアログでサブフォルダを作成する親フォルダを指定 ③指定したフォルダ内にサブフ…

サブフォームに表示されたデータシートをCSV出力するコード

■サブフォームに表示されたデータシートをCSV出力ボタンを押してCSV出力する Private Sub btnCsv_Click() funcOutputCSV 日付sub, "Q日にち検索", "サブフォーム出力" End Sub Function funcOutputCSV(subForm As subForm, strQueryName As String, strFileN…

テキストファイルを生成する

Sub test1() Dim strPath As String Dim FSO As Object 'ファイルシステムオブジェクトをインスタンス化 Set FSO = CreateObject("Scripting.FilesystemObject") '生成するファイルのパスを指定 strPath = "C:\Users\デスクトップ\test.csv" 'ファイルを生成…

UTF-8形式のCSVファイルをテーブルインポートできるよう加工

■UTF-8形式のままテーブルインポートしようとすると文字化けするので、ANSI形式で保存しなおす。ついでに、データの各項目にダブルクォーテーションもつける・編集前UTF-8形式のCSVファイル ・編集後UTF-8形式のCSVファイル ・インポート前テーブル ・インポ…

CSVにダブルクォーテーションを付けて編集後、新たなCSVファイルに書き出し(文字コード日本語の場合)

■ダブルクォーテーションなしのCSVにダブルクォーテーションを付けて加工する。 書き出す際にOpenメソッドのOutPutモードで書き出そうとすると ダブルクォーテーションが2重についてしまい失敗する(””項目”” の様になる) 読み取りをOpenメソッドのInputモ…

Dir関数(ファイルの存在確認・フォルダ内の全てのファイルを調べる)

■Dir関数 ファイルの存在確認。パスを含まないファイル名を返す。(つまり戻り値String型) Dir("ファイルパス") ・引数に指定したファイル名が存在しないと空欄を返す。 ・引数にワイルドカード「*」を指定した場合はいかのような動きをする。 ①最初にDir関…

ファイルが既に開かれているかどうか調べる

※こちらの方法もあり↓こちらの方が使い勝手良いかも。。。 Excel VBA ファイルが既に開かれているかどうか調べる その② - ray88’s diary ■使用にあたっての注意事項 たとえば、各部署ごとにフォルダが分かれていて、各同じファイル名のファイルが格納されて…

CSVファイルデータを読み込む

① Openメソッドで読み込む方法 ② ADODBでレコードセットに格納して読み込む方法 '-------------------------------------------------------------------①まずはOPENメソッドでデータを読込む方法 Sub testReadText1() Dim buf As String Dim dataArray As V…

フルパスから拡張子なしのファイル名と拡張子を求める

※FileSystemObjectを事前バインディングする際は参照設定の 「Microsoft Scripting Runtime」にチェックを入れる Sub testGetFileInfo() Dim TargetPath As String Dim fileName As String Dim strExtension As String '-----------------------------------…

フルパスからファイル名とフォルダパスを取得する

■まずは、単純に取得する方法 Sub testGetFileInfo() 'フルパスからファイル名を取得 strFileName = Dir(strTempFilePath) 'フルパスからフォルダパスを取得 strFolderPath = Replace(strTempFilePath, strFileName, "") End Sub ■FileSystemObjectを使用し…