もめんの格闘日記

主にPowerPointを中心としたPCのTips的なものを書いていく予定です。

【PowerPointマクロ】保存されているフォルダのパスを取得する方法

今回はアクティブなプレゼンテーションの保存フォルダ(パス)を調べる方法を紹介します。

PowerPointからファイルを開くとき等は、フルパスを指定する必要があるのでマイドキュメントといえど下記のようになり面倒です。

C:\Users\ユーザー名\Documents\ブログ用

 

また、保存フォルダの上の階層に開きたいファイルがあるときも便利です。

では、早速どうぞ。

 

アクティブなプレゼンテーションのパスを取得する

Dim FilePath As String
FilePath = ActivePresentation.Path

 

たったこれだけです、はい。

でも、保存されていない場合は、FliePath="" になってしまします。

 

アクティブなプレゼンテーションの保存フォルダの上の階層のパスを取得する

Dim FilePath As String
Dim a As Long

FilePath = ActivePresentation.Path
a = InStrRev(FilePath, "\") - 1
FilePath = Left(FilePath, a)

上の階層を得るには文字列をちょっと操作する必要があります。

最初のFilePathが下記だとします。

C:\Users\ユーザー名\Documents\ブログ用

 

\ブログ用←これがいらいないので、\ を探してその後ろを消す。という操作をしています。

 

 a = InStrRev(FilePath, "\") - 1

上の式で \ を探します。

式としては後ろから探して一番最初にあった \ の位置(何文字目か)を返します。

この場合の位置は頭から数えた値になります。

-1しているのは、そのままだと次の式で \ が残ってしまうからです。

 

FilePath = Left(FilePath, a)

で文字列を頭からa番目まで取る(aより後ろを消す)ことができます。

LeftはExcelの関数にもあるので分かり易いかと思います。

 

アクティブなプレゼンテーションの保存フォルダ名を取得する

Dim FilePath As String
Dim a As Long

FilePath = ActivePresentation.Path
a = InStrRev(FilePath, "\") + 1

FilePath = Mid(FilePath, a)

 

今回も最初のFilePathが下記だとします。

C:\Users\ユーザー名\Documents\ブログ用

 

ブログ用←これを取り出したいので、\ を探してその後ろを取得する。という操作をしています。

 

a = InStrRev(FilePath, "\") + 1

先ほどと同様、上の式で \ の位置を探し、今度は+1します。

FilePath = Mid(FilePath, a)

Midでa番目から後ろを取ります。Midの引数は3つですが、3つ目がない場合はa番目から最後まで勝手に取得してくれます。

 

 

今回はこんな感じです。

文字列の操作が主でした。