ラベル ファイル操作 の投稿を表示しています。 すべての投稿を表示
ラベル ファイル操作 の投稿を表示しています。 すべての投稿を表示

エクセル PDFファイルの挿入



PDFファイルの挿入


画像の挿入のように、エクセルにPDFファイルを挿入する方法です。
今のことろExcel2010以上で出来るのは確認しています。

手順
1.リボンにある[挿入]の[オブジェクト]




2.[新規作成]タブにある[Adobe Acrobat Document]



3.ファイルを選択する



・・・で、挿入されます。



ただ、妙に動きが重かったり
挿入するファイルが大きい場合?かページ数が多い場合?かわかりませんが

「別のプログラムでのoleの操作が完了するまで待機します。 」
というメッセージが出続けてタスクマネージャで消さないとどうしようもなくなってしまったりするので
PDFをjpgなどの画像に変換してから
[挿入]→[図]などの方法の方がやりやすい気がします・・。

PDFの画像変換はwebで「PDF pdf 画像変換」とかで検索すると無料のwebサービスが出てきます。


VBA ブックの共有の解除




VBAを使ってエクセルブックのの共有の解除をする方法です。
エクセル上だと[リボン]→[校閲]→[ブックの共有]→[複数ユーザーによる同時編集と、ブックの結合を許可する]のチェックを外すことと同じ動作を再現します。


ステートメント構文など
WorkBook.UnprotectSharing(SharingPassword)
WorkBook.ExclusiveAccess



サンプルコード(パスワード設定なし)
Sub kyoyu()
    ActiveWorkbook.UnprotectSharing
    ActiveWorkbook.ExclusiveAccess
End Sub


実行結果イメージ


解説
例としてActiveWorkbookに対して共有の解除をする処理をしています。

UnprotectSharingは共有保護を解除しブックを保存するメソッドです。
が、
単体だとなぜか動きません。
そこでExclusiveAccessで共有ファイルとして開いているブックを他のユーザーが変更できないようにしています。

この二つのメソッドを実行すると保護の解除の処理にすすみます。
「このブックの保護を解除すると、ファイルの変更の履歴が削除されます。また、共有を無効にすると、上書きせずにこのファイルを保存することはできなくなります。このファイルの保護を解除してもよろしいですか?」

というコメントが出て、「はい」か「いいえ」を選択し「はい」の場合は保護を解除します。
このアラートを出したくない場合は事前にApplication.DisplayAlerts = Falseと記述しておけば、 アラートなしで共有化が解除になります。




サンプルコード(共有パスワード設定あり)
Sub kyoyu()
    ActiveWorkbook.UnprotectSharing Sharingpassword:="1234"
End Sub




解説

UnprotectSharingのパラメータSharingpasswordを記述することによって エクセル上でいう「ブックの保護と共有」の「共有の解除」を実行します。
これで終わりです。

この場合はExclusiveAccessを記述していると
「ExclusiveAccessメソッドは失敗しました」というエラーが出てしまうので記述はいらないみたいです。


関連・類似ページ
ブックの共有化
ブックの保存
警告や確認メッセージを非表示にする

VBA ブックの共有化




VBAを使ってエクセルブックのの共有をする方法です。
エクセル上だと[リボン]→[校閲]→[ブックの共有]で同じ動作を再現します。


ステートメント構文など
WorkBook.ProtectSharing



サンプルコード
Sub kyoyu()
    ActiveWorkbook.ProtectSharing
End Sub


実行結果イメージ


解説
例としてActiveWorkbookに対して共有する処理をしています。
エクセル上で冒頭にあるような共有の仕方をする時もそうですが、共有しようとすると

「この操作を行うと、ブックはいったん保存されます。よろしいですか?」
というコメントが出て、「OK」か「キャンセル」を選択しないと処理が進まなくなります。
このアラートを出したくない場合は
ProtectSharing
前に
Application.DisplayAlerts = False
と記述しておけば、 アラートなしで共有化が出来るようになります。




パスワード設定をする場合(エクセル上の「ブックの保護と共有」)はProtectSharingのパラメーターSharingPasswordを指定します。
サンプルコード
Sub kyoyu()
    ActiveWorkbook.ProtectSharing  Sharingpassword:="1234"
End Sub

関連・類似ページ
ブックの共有の解除
ブックの保存
警告や確認メッセージを非表示にする

VBA サブフォルダ内ファイルの取得(FSO)




エクセルVBAでフォルダ内フォルダ(サブフォルダ)のファイルを取得して一括コピーする例です。

・FileSystemObject(FSO)
Dir

などを使用します。


Option Explicit
Sub imd()
    '※参照設定でMicrosoft Scripting Runtimeにチェック
    Dim FSO As FileSystemObject  ' FSO
    Set FSO = New FileSystemObject

    '元の親フォルダ=dir1
    Dim dir1 As String
    
    'ダイアログボックスから元親フォルダ選択
        Application.FileDialog(msoFileDialogFolderPicker).Show
        dir1 = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
    
    'コピー先のFolder=dir2
    Dim dir2 As String
        MkDir dir1 & "after"
        dir2 = dir1 & "after"
    
    'コピー対象ファイル=tg
    Dim tg As String
    
    '個々のサブフォルダ
    Dim subF As String
        subF = Dir(dir1 & "\", vbDirectory)
    
    Do While subF <> ""
    
        If subF <> "." And subF <> ".." Then ' なんか変なのが返ってくるので無視する
    
            '例としてサブフォルダ内のエクセルファイルを対象
            tg = dir1 & subF & "\*.xls"
   
            ' FSOによるファイルコピー
            FSO.copyFile tg, dir2
        End If
    
    subF = Dir()
    
    Loop
    
    Set FSO = Nothing

End Sub


Application.FileDialogでダイアログボックスからフォルダを取得しているのでそのままでも使用出来ると思います。
このまま実行する場合は参照設定で[Microsoft Scripting Runtime]にチェックを入れてください。

11,12行目
Application.FileDialog(msoFileDialogFolderPicker).Show
dir1 = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"

→取得対象元の親フォルダ(dir1)を選択

16,17行目
MkDir dir1 & "after"
dir2 = dir1 & "after"

→親フォルダ内に"after"というコピー先のフォルダ(dir2)を作成


参照・類似ページ
Application.FileDialog(msoFileDialogFolderPicker)
Dir
MkDir

VBA フォルダ作成する(MkDir)



MkDir path
フォルダを作成するにはMkdirステートメントにフォルダのパスを引数に指定します。
ドライブ名を指定しない場合はカレントフォルダに作成されます。

サンプルコード
Sub mkmkd()
Dim tDir As String 'フォルダ作成パス
Dim nDir As String '作成するフォルダ名
    
    'このワークブックのパスを取得
    tDir = ThisWorkbook.Path
    
    'tDirに作成するフォルダ名(名称:test)
    nDir = tDir & "\" & "test"
    
    '既にnDirがあるかどうか確認
    If Dir(nDir, vbDirectory) = "" Then
        'ない場合は作る
        MkDir nDir
    'あるなら何もしない
    Else: End If

End Sub

サンプルコードではDir関数を使用して フォルダの有無を確認しています。

VBA テキストファイル(.txt)の作成




FileSystemObject.CreateTextFile(FileName[, Overwrite[, Unicode)

FileSystemObjectオブジェクトのCreateTextFileメソッドを使ったテキストファイル(.txt)の作り方です。


名前 説明 備考
filename ファイル名 string 必須
overwrite 上書き可否 True or
False
省略可
(初期値:False)
unicode ASCIIファイル or
Unicodeファイル
True or
False
省略可
(初期値:True_ASCII)
引数一覧

引数filenameはファイルパスを含めて指定出来ます。
指定しなかった場合はアクティブなフォルダにファイルが作成されます。
存在しないパスを指定した場合は「パスが見つかりません」というエラーになります。


サンプルコード
Sub createTxt()
 Dim fso As Object
 
 Set fso = CreateObject("Scripting.FileSystemObject")
  fso.createtextfile ("D:\test.txt")
 
 Set fso = Nothing
End Sub


このサンプルでのSet fso = Nothingで参照を解放するメリットはあまりないですが(End Subの直前なので)、通常参照し続けておくとメモリを消費するという噂もあるので 使用が終わったobjectは= Nothingにするのが良いらしいです。

VBA ファイルをコピーする(FileCopy)




ステートメント構文など
FileCopy source, destination

ファイルのコピーをするステートメントです。
source にコピー対象のファイルを指定し、 destination にコピー後のファイル名やファイルパスを指定します。
source もファイルパスから指定出来ます。


サンプルコード
Sub SampleFCsd()
    Dim A, B'(
    'コピー元のファイル A
    A = "C:\test.xlsx"
    
    'コピー後のファイル B
    B = "D:\test.xlsx"
        
        'AをBにコピー
        FileCopy A, B
    
End Sub
上記ではCドライブ直下にあるtest.xlsxというファイルをDドライブ直下にコピーする作業を実行しています。


ファイル、フォルダの名前を変更 Nameステートメント




構文など
Name oldpathname As newpathname 

エクセルVBAでファイル名やフォルダ名を変更するoldpathname を newpathname に変換するステートメントです。


名前 説明 備考
oldpathname 変更するファイル・フォルダ名をファイルパスを含めて指定する 必須
newpathname 新しいファイル・フォルダ名をファイルパスを含めて指定する 必須
指定項目

変換するファイル名はエクセルに限定されずテキストファイルや画像ファイル等も変換可能です。拡張子の変更は見た目上は可能ですが、構造は変更されません。


サンプルコード
Sub namae()
    
    '"左" をas以降に変換
    Name "C:\Document\dammy.txt" As "C:\Document\dammy.txt"

End Sub



エラー
既に同名のファイルが存在しています。(Error 58)


 ・原因
  newpathname にすでに存在しているファイル名を指定するとこのエラーメッセージが表示されます。
 ・対処法
  newpathname に別のファイル名を指定するか、既に存在するファイルを削除します。

VBA フォルダ内ファイル名一括変換



VBAでDir関数 やNameステートメントを使用してファイル名を一括で変更するコードです。


サンプルコード
Sub FileNameChange()
Dim FileP As String    

 'フォルダ選択のダイアログボックスを開く
  Application.FileDialog(msoFileDialogFolderPicker).Show
 '選択したフォルダのパス名を取得
  FileP = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    
 'ファイル名の変換
Dim FileA As String
 '選んだフォルダの拡張子xlsを含むファイルを返す
    FileA = Dir(FileP & "\*.xls*")
    
 'フォルダ内のファイルがなくなるまで繰り返す
    Do While FileA <> ""
    
     'ファイル名の変換
      Dim Str1 As String, Str2 As String
       '変換前の対象文字列
        Str1 = "201308" '←任意で変える部分
       '変換後の文字列
        Str2 = "201310" '←任意で変える部分
       '各ファイルのStr1部分をStr2に変換する
        Name FileP & "\" & FileA  As (Replace(FileP & "\" & FileA , Str1, Str2))
    
     'Dirの指定をなくす
        FileA = Dir()
    Loop
End Sub



サンプルではファイル名の"201308"を"201310"という文字列に変換しています。
ファイル名の変換に使用しているReplace関数は、上記コードの状態ですと部分一致で置換します。


関連・類似ページ
Replace関数 (置換)
Dir関数 (フォルダの有無確認)
FileDialogオブジェクト (フォルダ選択のダイアログボックス)
Name ステートメント (ファイル名の変更)

カレントディレクトリ(現行フォルダ、ファイルパス)の変更



メソッド構文
VBAでカレントディレクトリ(現行フォルダ)の変更方法です。
2018/7/25 64bit対処、CreateObjectのエラーについて追記しました。

通常、カレントフォルダはファイルを開いたり保存したりすると自動的に変更されます。
ここでは任意にカレントフォルダを変更する方法についてまとめます。
使用中のPC内のローカルのフォルダ参照をする場合は ChDir を使用すれば簡単にカレントフォルダを変更出来ますが、 ネットワークドライブ上のフォルダに変更する場合は,WIN32API ( Application Programming Interface )かWSH (Windows Script Host)を使用することになります。
ユーザーにファイルを選択させて開かせる処理やファイル保存時などに活用出来ると思います。


1.ローカルPC上での変更方法

ChDir path
path に変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Sub S1_ChDir()
    'CurrentDirectoryを変更する
    ChDir "C:\Documents and Settings"
End Sub


2.ネットワーク上への変更方法 ( WIN32API )
宣言
32bit:
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA"
(ByVal lpPathName As String) As Long

64bit:
Private Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA"
(ByVal lpPathName As String) As Long


実行
Call SetCurrentDirectory ( FilePath )

エクセルの32bit と 64bitで宣言部分が異なります。
~宣言部分の意味~
Declare Function~ でAPI関数であることを宣言しています。
SetCurrentDirectory は関数名(通常名)を表示しており、
Lib "kernel32" は関数があるDLL名で、 Alias "SetCurrentDirectoryA" は関数名(実際の)です。
(ByVal:値渡し(プロシージャに値を提供)、lpPathName はパス名で(ByVal lpPathName As String)はSetCurrentDirectory関数の引数です。
 As LongはSetCurrentDirectory関数の戻り値が整数型ということを意味しており、失敗すると0が返り、成功すると0以外の値が返ります。

~実行部分の意味~
SetCurrentDirectory 関数の引数FilePathを呼び出す(現行フォルダにする)
FilePathに変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

Sub S2_ChDir()
'変更後パスFilePathの宣言
Dim FilePath As String
    '変更するファイルパスの指定
    FilePath = "\\NetWork\Path01"
    '変更の実行
    Call SetCurrentDirectory(FilePath)
End Sub


3.ネットワーク上への変更方法 ( WSH )

CreateObject("WScript.Shell").CurrentDirectory = FilePath

FilePathに変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Sub S3_ChDir()
  'CurrentDirectoryを変更する
  CreateObject("WScript.Shell").CurrentDirectory _
  = "\\NetWork\Path01"
End Sub


指定したパスが存在しない場合は

と、「CurrentDirectoryメソッドは失敗しました。'IwshShell3'オブジェクト」というエラーが表示されます。
正しいパスを指定してください。

新しいブックの作成 Workbooks.Addメソッド




Workbooks.Add (Excelファイル)

ワークブックの新規作成をするWorkbooks.Addメソッドです。
引数に何も指定しないとファイル形式は通常の形式(バージョンによって異なります)となり指定は出来ないです。
新規のワークブックとして使用するほか、計算場所・作業場所としての一時ファイルとして活用できるような感じです。

サンプル1 一時的に開いて保存せずに閉じる
Sub WoAd()
    Dim wb As Workbook
    Workbooks.Add

    'オブジェクト型変数なので 'Set'
    Set wb = ActiveWorkbook
        
        'なんとなくセルに文字入力
        wb.Sheets(1).Range("a1") = 1111

    'なんとなくA1セルをmsgboxに表示
        MsgBox wb.Sheets(1).Range("a1")
    
  '保存せずに閉じる
    wb.Close SaveChanges:=False
End Sub


また、引数に既存のエクセルファイルを指定するとそのファイルをテンプレートみたいな感じで新しいブックを作成します。
引数に指定できる拡張子は(.xls)、(.xlsx)、(.xlt)などエクセルの形式が対応しています。
ファイルはパスを含めて指定できます。

サンプル2 C:\aaa.xlsファイルをテンプレートとして開く
Sub ADDD()
    'パスを含めて指定する
    Workbooks.Add ("C:\aaa.xls")
End Sub

ダイアログボックスからファイルを保存する GetSaveAsFilenameメソッド



Application.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title)
ダイアログボックスを表示してファイル(Workbook)を保存する方法です。
WorkbookオブジェクトではなくてApplicationオブジェクトのメソッドです。
名前 説明 備考
InitialFilename ファイル名 省略した場合→
現在と同じファイル名
(変更なし)
FileFilter ファイルの候補を指定する文字列 省略した場合→
すべてのファイル(*.*)
FilterIndex FileFilterに複数指定した場合に使用 省略した場合→
最初のFilter
Title ダイアログボックスのタイトル 省略した場合→
"名前を付けて保存"
引数一覧
戻り値はVariant型です


このメソッドはあくまでファイル保存のダイアログボックスを表示して拡張子を含むファイル名を取得するメソッドです。
ファイルを保存するにはWorkbookオブジェクトのSaveAsメソッドを使用する必要があります。
また、ダイアログボックスから取得した拡張子を含むファイル名は表面上のファイル名なのでファイルの実際のフォーマットまでは指定されていません。
FileFilterで複数の拡張子を選択出来るようにした場合は、選択されたFileFilterごとの処理を記述する必要があります。



例)xlsかcsv形式でファイルを保存する
Sub SaveD1()
    Dim SaF As Variant
    
    'ファイル保存のダイアログボックス表示
    SaF = Application.GetSaveAsFilename( _
    InitialFileName:="TesstaaSA", _
    FileFilter:="Excel 97-2003 ブック(*.xls), *.xls" _
    & ",CSV(*.csv),*.csv", _
    FilterIndex:=1, _
    Title:="ファイル名を指定")

    
    'キャンセルボタンを押した場合の処理
    If SaF <> "False" Then
    Else
    Exit Sub
    End If
    
    'ファイルを保存する
    '拡張子がxlsの場合
    If Right(SaF, 3) = "xls" Then
    ActiveWorkbook.SaveAs Filename:=SaF, FileFormat:=xlNormal
    Else
    '拡張子がcsvの場合
    ActiveWorkbook.SaveAs Filename:=SaF, FileFormat:=xlCSV
    End If
    
End Sub

戻り値の変数としてのデータ型はVariantとしてますがStringでも変な動きはしなさそうです。

ファイルを保存する Workbook.SaveAsメソッド



SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

Workbook.SaveAs はワークブックファイルを保存するメソッドです。
引数を指定することでファイル名、書き込みパスワードの設定、ファイル形式(拡張子)の設定や読み取り専用推奨の設定などができます。

名前 説明 備考
FileName (ファイルパス+)ファイル名 String 必須
FileFormat ファイル形式(拡張子) XlFileFormat 既定:
開いてる
状態のまま
Password 読み取りパスワードの設定 String
15文字以内
既定:
設定なし
WriteResPassword 書き込みパスワードの設定 String 既定:
設定なし
ReadOnlyRecommended 読み取り専用推奨の設定 String 既定:
設定なし
CreateBackup バックアップ ファイルの作成有無 True or False 既定:
False
AccessMode アクセス モードを指定 XlSaveAsAccessMode 既定:
xlNoChange
ConflictResolution 共有ブックが更新時
競合した場合の処理方法
XlSaveConflictResolution 既定:
随時確認
AddToMru 最近使用したファイルの
一覧にブックを追加
True or False 既定:
False
TextCodePage Excelでは使用不可 - -
TextVisualLayout Excelでは使用不可 - -
Local ファイルの言語設定 True(Excel) or
False(VBA)
既定:
False
引数一覧


例)CSV形式で保存
Sub SaveAs1()

  'アクティブなワークブックをファイル名を指定して
  'csv形式で保存する
    ActiveWorkbook.SaveAs Filename:="Testfile", _
    FileFormat:=xlCSV

End Sub
※ファイル名のみ指定した場合は現在開いているファイルと同じファイルパスの場所に保存されます。

例)エクセル97-2003形式、書き込みパスワードを1234と設定して保存
Sub SaveAs2()

    'アクティブなワークブックをファイル名、書き込みパスワードを指定し、
    'xls形式で保存する
    ActiveWorkbook.SaveAs Filename:="Test2", _
    FileFormat:=xlWorkbookNormal, WriteResPassword:="1234"

End Sub

FileFormat:=xlWorkbookNormal でExcel97-2003(.xls)になります。
Excel2007以降のバージョンでFileFormat:=xlWorkbookDefault と指定するとExcelブック(*.xlsx)になります。

フォルダを選択するダイアログボックスの表示 FileDialog



Application.FileDialog(msoFileDialogFolderPicker).Show

FileDialogはユーザーに任意でフォルダを選択出来るダイアログボックスを表示する機能のオブジェクトです。
ダイアログボックスを表示してフォルダを開いている状態で「OKボタン」をクリックした時のフォルダを.SelectedItemsプロパティに取得します。


サンプル (選択したフォルダをメッセージボックスに表示)
Sub SampleFolderD()
    '取得するフォルダ名の宣言
    Dim folder1 As String
    'ダイアログボックスを表示
    Application.FileDialog(msoFileDialogFolderPicker).Show
    
    'OKボタンをクリックした時のフォルダの取得
    folder1 = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
     
    'フォルダ名をMsgBoxに表示
    MsgBox folder1
End Sub


結果 


「OK」を押した時点でのパスを取得します
例の場合は"~~\My Music"までのフルパスを取得します



関連
ファイル、フォルダの有無確認(Dir)関数

VBA ダイアログボックスでファイルを開く(GetOpenFilename)



Variant = Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
ダイアログボックスを表示してユーザーに選ばせて任意のExcelブック等のファイルを開く時には Application.GetOpenFilenameメソッドを使用します。

名前 説明 備考
FileFilter ファイルの候補を指定する文字列 省略→すべてのファイル
FilterIndex FileFilterに複数指定した場合に使用 省略→最初のFilter
Title ダイアログボックスのタイトル 省略→"ファイルを開く"
ButtonText MAC用 省略可
MultiSelect 複数のファイルを選択可否 省略→False(不可)
引数一覧


例)FileFilterを"Excel ファイル"で拡張子"*.xls*"で指定
Sub SampleFileOpen()
    Dim fileOpen As Variant
    Dim wbOpen As Workbook
    
    fileOpen = Application.GetOpenFilename("Excel ファイル (*.xls*),*.xls*")
     
    'キャンセルボタンを押した場合の処理
    If fileOpen = "False" Then
    Exit Sub
    End If
     
    'ファイルを開く
    Workbooks.Open (fileOpen)
    
    '変数に入れてみる
    Set wbOpen = Workbooks(Dir(fileOpen, vbNormal))
    MsgBox wbOpen.Name

End Sub

キャンセルボタンを押した場合はApplication.GetOpenFilenameの戻り値が"False"を返すのでそこを利用してExit Subで 処理を逃がしています。

変数に入れる処理はDir関数を使って fileOpenのファイルパス+ファイル名からファイル名のみを取得しています。


読み取り専用で開く場合は
    Workbooks.Open (fileOpen), ReadOnly:=True
とします。
参照:Workbooks.Openメソッド

引数イメージ

ファイルを閉じる Workbooks.Closeメソッド



Workbooks.Close(SaveChanges, Filename, RouteWorkbook)

開いているWorkbookを閉じるメソッドです。
引数は全て省略可能で、指定することでファイルの変更を保存するかどうかの選択と、ファイル名を変更させることが出来ます。

名前 説明 備考
SaveChanges 変更を保存するかどうか True or False 省略可(保存するかどうかの確認メッセージが出る)
Filename 変更後のファイル名 String 省略可(上書き保存)
RouteWorkbook 回覧するかどうか True or False 使用不可※
引数一覧
※回覧機能はExcel2007以降では削除されているようです



◯例:ファイル名を変更して保存する
Sub CloseSample()
Dim FN As String
    '保存するファイル名を"TestFile2"とする
    FN = "TestFile2"

    Workbooks.Open ("C:\TestFile.xls")
    
    'Workbookに変更を加える
    Workbooks("TestFile.xls").Worksheets(1).Range("A1") = 1
    '"TestFile2"に名前を変更して保存
    Workbooks("TestFile.xls").Close SaveChanges:=True, Filename:=FN

End Sub

ファイル、フォルダの存在の有無確認 Dir関数



Dir(pathname, attributes)

ファイルやフォルダの存在を確認する関数です。
引数pathnameに指定したファイル名やフォルダがある場合はそのファイル名・フォルダ名を返します。
存在しない場合は""を返します。これを利用して存在の確認が出来ます。
名前 説明 備考
pathname フォルダ名+ファイル名 ない場合は""
attributes ファイルの属性指定 省略すると標準の属性
指定項目



例)C:\にTestFile.xlsがあれば開く
Sub SampleDir()

    'ファイルの有無を確認
    If Dir("C:\TestFile.xls") = "" Then
        
        'ファイルがない場合(ファイル名が返ってきていない場合)
        MsgBox ("C:\TestFile.xlsはありません")
        Else
        
        'ファイルがある場合
        Workbooks.Open "C:\TestFile.xls"
    
    End If

End Sub


指定したpathnameに一致するファイルが複数ある場合は最初のファイルを返します
引数を指定せずに再びDir関数を実行すると次のファイルを返します

例)任意のフォルダにあるファイルをエクセルに書き出す
Sub SampleFoldDir()

    Dim Folder1 As String, FileA As String, LastRow As Long

    'フォルダを任意で選択する
    With Application.FileDialog(msoFileDialogFolderPicker).Show
    Folder1 = .SelectedItems(1)
    End With
    
    '選んだフォルダの拡張子xlsを含むファイルを返す
    FileA = Dir(Folder1 & "\*.xls*")


        'フォルダ内のファイルがなくなるまで繰り返す
        Do While FileA <> ""
        
        '一番上の行を取得
        LastRow = Cells(Rows.Count, 1).End(xlUp).Row
        
        '順にファイル名をセルに入力
        Cells(LastRow + 1, 1) = FileA
        
        'Dirのpathnameの指定をなくす
        FileA = Dir()
        
        Loop

End Sub

アクティブWorksheetのセル"A1"から下の行にファイル名を羅列します

フォルダ選択画面(フォルダを開いてOKクリックでフォルダ指定します)

ファイルを開く Workbooks.Openメソッド



オブジェクト内容など
Workbooks.Open(FileName , UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad )

ワークブックを開くWorkbookオブジェクトのメソッドです。
引数を指定することで読取り専用で開いたり、書き込みパスワードを解除して開くことができます。

引数はFileName,ReadOnly,UpdateLinksあたりをおさえておけば基本的には大丈夫だと思います。(エクセルファイルのみ扱う場合)
名前 説明 備考
FileName ファイルパス+ファイル名 String 必須
UpdateLinks リンク更新方法
(ユーザー任意,しない,する)

1 or 0 or 3
既定:
1
ReadOnly 読み取り専用かどうか True or False 既定:
False
Format txt.ファイルの場合の区切り文字
(タブ,コンマ,スペース,セミコロン,なし)
1 or 2 or 3 or 4 or 5 既定:
現在値
Password 読み取りパスワードがある場合に入力可能 任意のパスワード 既定:
省略
WriteResPassword 書き込みパスワードある場合に入力可能 任意のパスワード 既定:
省略
IgnoreReadOnly
Recommended
読み取り専用推奨時にメッセージを出さなくするか True or False 既定:
False
Origin txtファイルの場合、元のOS xlWindowsなど 既定:
使用OS
Delimiter 引数 Format が 6 の場合の区切り文字(タブ,コンマ,セミコロン) Chr(9) or "," or ";"
Editable Excel 4.0 のアドインの場合 True or False 既定:
False
Notify 誰かがファイル開いてる場合の通知 True or False 既定:
False
Converter ファイル コンバータのインデックス番号? ??? 既定:
???
AddToMru 最近使用したファイルの一覧にブックを追加 True or False 既定:
False
Local Excel の言語設定に合わせて保存する True or False 既定:
False
CorruptLoad 読み込み処理? xlNormalLoad,
xlRepairFile,
xlExtractData
既定:
省略
引数一覧


サンプルコード
Sub SampleOpen1()
    '[C:\]にある[TestFile.xls]を読み取り専用で、外部リンクを更新しないで開く
    Workbooks.Open "C:\TestFile.xls", ReadOnly:=True, UpdateLinks:=0

End Sub

関連ページ
実行時エラー '1004':'Open'メソッドは失敗しました

ファイルを削除する Killステートメント



Kill.pathname

指定したファイルを削除するステートメントです。
引数pathnameにファイルパス(フォルダ)とファイル名を指定します。
(ただし開いているファイルを削除しようとすると、エラーが発生します)

例)フォルダ名[C:\]にある[TestFile.xls]を削除する
Sub SampleKill()
Dim fileA As String

    fileA = "C:\TestFile.xls"
    'ファイルが存在する場合は削除
    If Dir(fileA) <> "" Then  'fileAが存在しなくない場合
        Kill fileA
    End If
    
End Sub



(実行イメージ)
※実行後、消したファイルは元に戻せません。
Dir はファイルがあればファイル名を返す関数です。



関連

ファイルの有無確認(Dir)関数