忍者ブログ
  • 2025.05《
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 》 2025.07
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2025/06/20 02:27 |
File
Excelマクロのモジュールをそのまま貼り付け。
(会社とか家とか出先とかで見るため)
「Option Compare Binary」以下を標準モジュールに貼り付ければ、Myマクロ辞典に!
貼り付け後、「■Sub 」を「Sub 」に置き換えよう!
※公開している以上、利用は自由ですが、自己責任で。


Option Compare Binary
Option Explicit
'
'ファイル関連

■Sub ファイルを取得()

'CurDir …カレントディレクトリ(フォルダ)
MsgBox "カレントディレクトリは " & CurDir & " です。   "


'Application.Path …エクセル本体のパス
MsgBox "エクセル本体のパスは " & Application.Path & " です。   "


'ThisWorkbook.FullName …コードが記述されたファイルのフルパス(ファイルパス+ファイル名)
MsgBox "コードが記述されたファイルのフルパスは " & ThisWorkbook.FullName & " です。   "


'ThisWorkbook.Path …コードが記述されたブック(このファイル)のパス(ファイルパスのみ)
MsgBox "コードが記述されたファイルのパスは " & ThisWorkbook.Path & " です。   "


'ThisWorkbook.Name …コードが記述されたブック(このファイル)名
MsgBox "コードが記述されたファイル名は " & ThisWorkbook.Name & " です。   "


'ActiveWorkbook.FullName …現在アクティブなブックのフルパス(ファイルパス+ファイル名)
MsgBox "現在アクティブなファイルのフルパスは " & ActiveWorkbook.FullName & " です。   " 'C:\Users\TP8204\Documents\Book1.xlsx


'ActiveWorkbook.Path …現在アクティブなファイルパス
MsgBox "現在アクティブなファイルのパスは " & ActiveWorkbook.Path & " です。   " 'C:\Users\TP8204\Documents


'ActiveWorkbook.Name '…現在アクティブなブック(このファイル)名
MsgBox "現在アクティブなファイル名は " & ActiveWorkbook.Name & " です。   " 'Book1.xlsx


'ActiveWorkbook.Name
MsgBox "拡張子を除いたファイル名は " & Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) & " です。" 'Book1


End Sub

■Sub ファイルの存在を調べる()
'引数に指定したファイルが存在するとファイル名を返し、存在しないと空欄("")を返す

If Dir("C:\Sample\Book2.xls") <> "" Then
Workbooks.Open "C:\Sample\Book2.xlsx"
Else
MsgBox "C:\Sample\Book2.xlsx" & vbCrLf & "が存在しません"
End If

End Sub

■Sub ファイルの新規作成()

Workbooks.Add

End Sub

■Sub ファイルを開く_その1()
'必ずパスで指定

Workbooks.Open FileName:="D:\My Documents\Book1.csv"

'読み取り専用モードで開く
Workbooks.Open FileName:="c:\test.xls", ReadOnly:=True

'※変数は使えないらしい
'※ファイルを開いてから変数を割り当てる

End Sub

■Sub ファイルを開く_その2()

Dim openFilePath As String

'ダイアログボックスが開いて、ファイルを指定する(だけ)※buttontextはMacのみ指定可
openFilePath = Application.GetOpenFilename("Microsoft Excelファイル,*.xls", Title:="ファイルを選択", buttontext:="")

'指定してファイル(パス)を開く
Workbooks.Open openFilePath


'◆拡張子の複数指定
' ×"Microsoft Excelファイル,*.xls?"   …xls、xlsm、xlsxなど(ダメみたい)
' "ファイル,*.xls ; *.txt" …いろいろな拡張子1
' "excelファイル,*.xls, wordファイル,*.doc, テキスト,*.txt" …いろいろな拡張子2

End Sub

■Sub ファイルを開くダイアログボックスを表示()

Dim openFilePath As String
Dim openFileName As String

ファイルを開く: '選択ファイルが適切でない場合に戻ってくる(→▲)

'---ダイアログを表示(ラベル)
openFilePath = Application.GetOpenFilename(FileFilter:="テキスト ファイル (*.csv),*.csv", _
Title:="のCSVファイルを選択してください。", buttontext:="") 'buttontextはMacのみ指定可

'---ファイル名をを取得(パスから分離)
openFileName = Mid(openFilePath, InStrRev(openFilePath, "\") + 1, 20)

'---ファイル名をチェック
'キャンセルが押下された
If openFilePath = "False" Then
MsgBox "ファイルが選択されていないか、見つかりませんでした。   ", vbOKOnly + vbCritical, "エラー"
End
'CSVファイルでない → ファイル選択に戻る
ElseIf Right(openFilePath, 4) <> ".csv" Then
MsgBox "選択されたのはCSVファイルではありません。   " & vbNewLine & _
"CSVファイルを選択してください。   ", vbExclamation, "ファイルエラー"
GoTo ファイルを開く '▲
'正常動作(ファイルの取り込み開始)
Else
If vbOK = MsgBox(openFileName & " を取り込みます。   ", vbOKCancel + vbInformation, "ファイルを開く") Then
Workbooks.Open FileName:=(openFileName)
Else
MsgBox "処理はキャンセルされました。   ", vbCritical, "中止"
End
End If
End If

End Sub

■Sub ファイルコピー()

FileCopy "C:\Work\Sample.txt", "D:\Tmp\Test.txt"

'コピー元ファイル名に存在しないパスや、存在しないファイル名を指定するとエラーになる。
'コピー先フォルダに同じ名前のファイルが存在するときは上書きされる。

End Sub

■Sub ファイル名の変更()

Name "C:\Work\ABC.txt" As "C:\Work\abc.txt"

End Sub

■Sub ファイル移動()

Name "C:\Work\Sample.txt" As "C:\Home\Sample.txt"

'※Nameステートメント(ファイル名の変更)でパスと変更、名前を同じにすると、結果的に移動になる。

End Sub

■Sub ファイル保存_その1()

ActiveWorkbook.Save '上書き保存(一度も保存していない場合は新規保存になる)
ActiveWorkbook.SaveAs FileName:=("新規ファイル名"), FileFormat:=xlWorkbookNormal '新規保存(Excel97-2003の互換ブック):ファイル名を指定する
ActiveWorkbook.SaveCopyAs FileName:=("コピーファイル名"), FileFormat:=56 'コピーを保存(Excel97-2003の互換ブック)

'※利用しているExcelのファイル形式(xls,xlaxなど)以外で保存する場合にFileFormatを省略すると、ファイルが壊れるので必ずつける。
'※FileFormatを指定した場合は、特別な場合を除いてファイル名に拡張子はいらない。

'保存するファイル形式(一例) FileFormat値
'Excel97-2003の互換ブック xlExcel8, 56, xlWorkbookNormal, -4143
'利用しているExcelの標準ファイル形式 xlWorkbookDefault, 51
'csv xlCSV, 6

'※ヘルプ→Microsoft Visual Basic for Applications ヘルプ→「XlFileFormat 列挙」で検索
'※バージョン参照:Other→「Excelのバージョンを取得」「ファイルフォーマットを取得」

End Sub

■Sub ファイル保存_その2()

'名前をつけて保存ダイアログが開く
'ダイアログのボタンは使えず、「保存先」のプルダウンメニューでフォルダを指定する。
'[保存]ボタンをクリックすると入力したファイル名で保存される。
'デフォルトフォルダも指定したフォルダに変更される。

Dim ns As Workbook
Dim msg As String

Set ns = ActiveWorkbook

msg = IIf(Application.Dialogs(xlDialogSaveAs).Show(arg1:="Sheet1.xls", arg2:=1), "保存", "キャンセル") '※
'ns.Close (False)

Set ns = Nothing

MsgBox msg & "しました。"
MsgBox CurDir


'組み込みダイアログボックス
'名前を付けて保存
'Application.Dialogs(xlDialogSaveAs).Show arg1:="Sheet1.xls", arg2:=43

'arg引数 解説 例
'1 ファイル名 Sheet1.xls
'2 ファイルの種類 1:Excelファイル、3:TXTファイル、6:CSVファイル(ヘルプ→「XlFileFormat 列挙」で検索)
'3 読み取りパスワード TRUE/FALSE ←未確認
'4 バックアップファイルを作成 TRUE/FALSE ←未確認
'5 書き込みパスワード 1234
'6 読み取り専用を推奨 TRUE/FALSE ←未確認


'「ファイル保存_その1」の文末の「※」参照

End Sub

■Sub ファイルを開いて保存()

Dim f_path As String 'このマクロファイルのあるパス
Dim f_name As String '保存するファイル名
Dim s_path As String 'ダイアログボックスで表示するフォルダと保存ファイル名
Dim mt As String 'ダイアログボックスのタイトル

f_path = ThisWorkbook.Path
f_name = Format(Date, "YYYYMMDD") & "1.xls"
s_path = f_path & "\" & f_name
mt = "保存するフォルダを選択して保存"

'---保存ダイアログを表示(保存するフルパスを取得)
ファイルを開く:
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFilename(InitialFileName:=s_path, FileFilter:="Excel File (*.xls),*.xls", Title:=mt)

'---ファイルを保存する
If saveFilePath = "False" Then 'キャンセルが押下された
MsgBox "キャンセルされました。   " & vbNewLine & f_name & "は保存できませんでした。   ", vbOKOnly + vbCritical, "エラー"
End
Else
ThisWorkbook.SaveAs saveFilePath
MsgBox f_name & "を保存しました。   ", vbInformation, "完了"
End If

'---カレントフォルダが変更された。以後このフォルダに保存される。
Debug.Print CurDir

End Sub

■Sub ファイル指定()

Workbooks("ID.xls").Activate

'保存されていないファイルは拡張子なしで選択。(またはファイル名を変数に代入)
Workbooks("Book1").Activate

End Sub

■Sub ファイル名を取得()

Dim FileName As String
Dim ext As String

FileName = "D:\My Documents\ABC.xls"
MsgBox FileName, vbInformation, "フルパス"


'フルパスからファイル名を除いたパスを取り出す(左端から「\」を検索)
FileName = "D:\My Documents\ABC.xls"
FileName = Left(FileName, InStrRev(FileName, "\") - 1)

MsgBox FileName, vbInformation, "パス"

'ファイル名を取得、または開いた後なら下記でOK
'MsgBox CurDir, vbInformation, "パス"


'フルパスからファイル名を取り出す(右端から「\」を検索)
FileName = "D:\My Documents\ABC.xls"
FileName = Mid(FileName, InStrRev(FileName, "\") + 1, 50)

MsgBox FileName, vbInformation, "選択されたファイル名"


'ファイル名から拡張子を除いたファイル名を取り出す(左端から「.」を検索)
FileName = "ABC.xls"
FileName = Left(FileName, InStr(FileName, ".") - 1)

MsgBox FileName, vbInformation, "拡張子抜きのファイル名"


'フルパスから拡張子を取り出す
FileName = "D:\My Documents\ABC.xls"
ext = Right(FileName, 4)

MsgBox ext, vbInformation, "拡張子"

End Sub

■Sub ファイル読込_その1()

Dim mtle As String 'ダイアログボックスのタイトル
Dim mbtn As String 'ダイアログボックスのボタン(Macのみ指定可)
Dim xbottom As Long '選択範囲の最下行値(コピー元)
'Dim xlower As Long '選択範囲の最下行値(コピー先)←Publicで指定済み


'If vbOK = MsgBox(f_type & "ファイルの取り込みを開始します。   " & vbNewLine & "CSVファイルを選択してください。   ", _
' vbOKCancel + vbQuestion, "CSVファイルの取り込み") Then

'---カレントフォルダの変更(下記『ファイルを開く:』で現在のフォルダをデフォルトで表示させるため。後で必ず元に戻すこと。)
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path

'---カレントフォルダ(現在のファイルパス)を取得(このパスに完成ファイルを保存)
f_path = CurDir
Debug.Print f_path

'---ダイアログの内容を指定
mtle = f_type & "のCSVファイルを選択してください。"
mbtn = "" 'Macのみ指定可

'---ダイアログを表示(ラベル)
ファイルを開く:
f_name = Application.GetOpenFilename(FileFilter:="テキスト ファイル (*.csv),*.csv", Title:=mtle, buttontext:=mbtn)

'---ファイル名を取得
f_name = Mid(f_name, InStrRev(f_name, "\") + 1, 20)
'MsgBox f_name, vbInformation, "選択されたファイル"

'---ファイルを開く
If f_name = "False" Then 'キャンセルが押下された
MsgBox "ファイルが選択されていないか、見つかりませんでした。   ", vbOKOnly + vbCritical, "エラー"
End
ElseIf Right(f_name, 4) <> ".csv" Then 'CSVファイルでない → ファイル選択に戻る
MsgBox "選択されたのはCSVファイルではありません。   " & vbNewLine & _
"CSVファイルを選択してください。   ", vbExclamation, "ファイルエラー"
GoTo ファイルを開く
Else
If vbOK = MsgBox(f_type & "ファイル " & f_name & " を取り込みます。   ", vbOKCancel + vbInformation, "ファイルを開く") Then
Workbooks.Open FileName:=(f_name)
Else
MsgBox "処理はキャンセルされました。   ", vbCritical, "中止"
End
End If
End If


'---貼り付けシートにコピー
Windows(f_name).Activate
xbottom = Range(Cells(1, 3), Cells(1, 3)).End(xlDown).Row 'コピー元の最下行検出
Range(Cells(1, 1), Cells(xbottom, 13)).Select '検出した範囲を選択
'Cells.Select
Selection.Copy

Workbooks("OSリスト_2009.xls").Worksheets("貼り付けシート").Activate
'Application.Goto Workbooks("OSリスト_2009.xls").Sheets("form_sheet").Range("A1")

xlower = Range(Cells(1, 3), Cells(1, 3)).End(xlDown).Row 'コピー先の最下行検出
If xlower >= 65536 Then
xlower = 1 '最下行が最下段セルなら1
Else
xlower = xlower + 1 '最下行の次行を選択
End If
'ActiveSheet.Cells(xdown, 1).Paste '×
Cells(xlower, 1).Select
ActiveSheet.Paste

'---列Aに研修タイプを入力
Range(Cells(xlower, 1), Cells(xlower + xbottom - 1, 1)).Value = f_type

'---CSVファイルを閉じる
Excel.Application.CutCopyMode = False 'クリップボードを空にする
Workbooks(f_name).Close SaveChanges:=False


End Sub

■Sub ファイル読込_その2()
'上記「ファイルを取り込む2」のINマクロ

Dim mtle As String 'ダイアログボックスのタイトル
Dim mbtn As String 'ダイアログボックスのボタン(Macのみ指定可)
Dim xbottom As Long '選択範囲の最下行値(コピー元)
'Dim xlower As Long '選択範囲の最下行値(コピー先)←Publicで指定済み


'If vbOK = MsgBox(f_type & "ファイルの取り込みを開始します。   " & vbNewLine & "CSVファイルを選択してください。   ", _
' vbOKCancel + vbQuestion, "CSVファイルの取り込み") Then

'---カレントフォルダの変更(下記『ファイルを開く:』で現在のフォルダをデフォルトで表示させるため。後で必ず元に戻すこと。)
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path

'---カレントフォルダ(現在のファイルパス)を取得(このパスに完成ファイルを保存)
f_path = CurDir
Debug.Print f_path

'---ダイアログの内容を指定
mtle = f_type & "のCSVファイルを選択してください。"
mbtn = "" 'Macのみ指定可

'---ダイアログを表示(ラベル)
ファイルを開く:
f_name = Application.GetOpenFilename(FileFilter:="テキスト ファイル (*.csv),*.csv", Title:=mtle, buttontext:=mbtn)

'---フルパスからファイル名を取得
f_name = Mid(f_name, InStrRev(f_name, "\") + 1, 20)
'MsgBox f_name, vbInformation, "選択されたファイル"

'---ファイルを開く
If f_name = "False" Then 'キャンセルが押下された
MsgBox "ファイルが選択されていないか、見つかりませんでした。   ", vbOKOnly + vbCritical, "エラー"
End
ElseIf Right(f_name, 4) <> ".csv" Then 'CSVファイルでない → ファイル選択に戻る
MsgBox "選択されたのはCSVファイルではありません。   " & vbNewLine & _
"CSVファイルを選択してください。   ", vbExclamation, "ファイルエラー"
GoTo ファイルを開く
Else
If vbOK = MsgBox(f_type & "ファイル " & f_name & " を取り込みます。   ", vbOKCancel + vbInformation, "ファイルを開く") Then
Workbooks.Open FileName:=(f_name)
Else
MsgBox "処理はキャンセルされました。   ", vbCritical, "中止"
End
End If
End If

End Sub

■Sub ファイルを閉じる()

'CSVファイルを閉じる
Workbooks("Book1").Close

'ワークファイル"Book1"を保存して閉じる(新規の場合はダイアログボックスが表示)
Workbooks("Book1").Close SaveChanges:=True

'ワークファイル"Book1.xls"を保存しないで閉じる
Workbooks("Book1").Close SaveChanges:=False

'ワークファイル"Book1.xls"をファイル名"Book2.xls"に変更して閉じる
Workbooks("Book1").Close SaveChanges:=True, FileName:="Book2"

End Sub

■Sub ファイルを閉じるときにマクロを実行する()

'Other>ファイルを閉じる時にマクロを実行する(Auto_Close) 参照

End Sub

■Sub ファイルを削除()

Kill "D:\Tmp\Test.txt"

End Sub

■Sub アプリケーションを閉じる()
'Excelを閉じる

'(1)‥× Excelは閉じない
End 'マクロの終了
Application.Quit 'Excelの終了

'(2)‥○ マクロが終了して、Excelが閉じる
Application.Quit 'Excelの終了
End 'マクロの終了

'【解説】
'アプリケーションを閉じてもマクロは終了しない。
'でもマクロを終了させると、次行以降のコード(Application.Quit)が実行されない。
'「Application.Quit」が読み込まれても、次行以降のマクロも実行されるようになっている。
'ので、(2)が正しい。

End Sub
PR
2015/04/14 21:47 | Excelマクロ(VBA) | コメント(0)
<<Falder | ホーム | MsgBox>>
コメント
コメントの投稿















前ページ | ホーム | 次ページ