質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

3115閲覧

VBAでフォルダ名の取得。

.feel-ing_

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/02/23 04:47

セルから取得した値から、改行を削除したもの名前とし、フォルダを作成したいのですが、取得したセル自体の値は変更したくありません。現在下記のように作ってみたのですが、うまく動かないのでご教授いただけますか、、

Sub ログフォルダ作成()

Dim ログフォルダ As String
Dim フォルダ名 As String

フォルダ名 = Replace(ActiveCell.Offset(0, 1).Value, vbCrLf, "")
ログフォルダ = "C:\Users" & フォルダ名

MkDir ログフォルダ

End Sub

かなり素人なので、優しく教えていただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unau

2016/02/23 04:55

エラーは出ていますか。出ているとしたらどんなエラーが出ていますか。
.feel-ing_

2016/02/23 05:13

「パスが見つかりません」になっていたのですが、他の回答者様のご指摘で、vbLfとしたら動きました!
guest

回答2

0

Excelの場合、セル内の改行コードはLFのみです。
ですのでvbCrLfではなくvbLfを使ってreplaceしてあげます。

フォルダ名 = Replace(ActiveCell.Offset(0, 1).Value, vbLf, "")

Windows では通常、改行コードはCrLfですが、Word の shift+enter による改行や Excel のセル内改行ではLfのみとなる仕様だそうです。

投稿2016/02/23 05:10

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

.feel-ing_

2016/02/23 05:14

その通りにすると治りました!BAには他の方選んでしまいましたが、詳しく説明頂きありがとうございます。
thom.jp

2016/02/23 22:03

横からすみません。 補足しますと、Alt+Enterで改行した場合はLFとなりますが、マクロ等でセルにvbCrLfを入力することはできます。 今回のケースでは問題ないと思いますが、混在してしまう可能性があれば、vbCrLfを一旦vbLfに置換し、それから目的の値に変換すると良いです。 ちなみにWordのShift+Enterは、LFではなく、垂直タブChr(11)またはvbVirticalTabです。
guest

0

ベストアンサー

「vbCrLf」のところを「vbLf」か「vbCr」に変更して試してみてください。(たぶんvbLfで動くと思います)

<追記>
すみません、途中で送信してしまいました。
見た目には分からないのですが、改行の種類にはこの3つがあるため、場合によって使い分ける必要があるのです。

投稿2016/02/23 04:53

編集2016/02/23 04:55
takushi168

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

.feel-ing_

2016/02/23 05:11

治りました!!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問