Excel上に入力されているパス名とファイル名のデータを組み合わせて、
様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。
仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名
A2セルに URIAGE.xls というファイル名が入力されていたとして、
A1の文字列データとB1の文字列データを結合する場合、
Sub FileSousa()
Dim a As String
Dim b As String
Dim c As String
a = Cells(1, "A").Value
b = Cells(2, "A").Value
c = Chr(34) & a & "\" & b & Chr(34)
Range("A3") = c
としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls"
と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って
Workbooks.Open Filename:=c
として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。
ファイルはデスクトップ上の確かにその名前で存在しており、直接
Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls"
とすると開きます。
" を Chr(34)によって入力したのがいけないのでしょうか、
Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。
そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、
a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。
No.3ベストアンサー
- 回答日時:
結論を先に述べれば、chr(34) 付加しているのが実行されない原因です。
例えば、
Workbooks.Open Filename:="C:\temp\book1.xls"
は実行されますが、
Workbooks.Open Filename:="""C:\temp\book1.xls"""
は '"C:\temp\book1.xls"' は見つからないとのエラーが出ます。
つまり、この場合、<">がパスとファイル名の一部として認識されています。
ところで、""" は chr(34) の表記の別形式です。
このことは、イミディエイトウィンドウで確認することができます。
[イミディエイトウィンドウ]
strA = Chr(34)
? strA
"
strA = """
? strA
"
|C:\temp\book11.xls|
+---------+
|"C:\temp\book11.xls"|
+----------+
変数は、C:\temp\book11.xls のみを格納しています。
けっして、"C:\temp\book11.xls" とダブルクーテーションも格納している訳ではないです。
コンピュータは、値を格納する際に<どこにどのように>が判らないと処理できないのです。
ダブルクーテーションは、単に、値を格納する箱のタイプを指示しているだけです。
一旦、格納した値を取り出す時は、中味だけでよいのでダブルクーテーションは不要です。
多分、この辺りの誤解が原因でしょう。
大変丁寧にご説明いただき疑問が氷解しました。
ご指摘のとおり Chr(34)は不要のようでした。
文字列はとにかく””と頭から決めてかかっていたのがいけませんでした。
ありがとうございました。
No.2
- 回答日時:
うん、手元ではChr(34)なしでないと動かなかった。
でも
本当にここであってる?
>C:\Documents and Settings\デスクトップ\URIAGE.xls
C:\Documents and Settings\ユーザー名\デスクトップ\URIAGE.xls
が正しいと思うんだけど
ご指摘のとおり Chr(34)は不要のようでした。
パス名については説明上短くしましたが、確かにユーザー名が入っていました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
エクセルVBA Workbook変数に変数を使ったファイル名を格納したい
Visual Basic(VBA)
-
VBAでワークブックの名前を変数にして開かせる?
Excel(エクセル)
-
-
4
別のシートから値を取得するとき
Visual Basic(VBA)
-
5
vbaでファイルを開くパス名に変数を使いたい
Visual Basic(VBA)
-
6
保存先のパスを変数に格納して使用する方法
Visual Basic(VBA)
-
7
Excel-vba 文字列と変数を連結して更に変数として扱いたい
その他(プログラミング・Web制作)
-
8
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
9
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
10
excelで複数セル値を組合わせてファイル名にする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでHashMap・配列の変数の値...
-
C#について質問です。文字列型(...
-
matchesを否定文として使う方法...
-
空の場合を含む選択肢からのラ...
-
Stringクラスの変数の格納アド...
-
BOOL値を逆にしたい
-
Java配列でNullPointerExceptio...
-
java キーボード入力された値の...
-
JAVA EOFの検出 (条件文で「...
-
System.err. printlnとSystem.o...
-
iterateで受け取った値を処理に...
-
EXCEL VBA で、0から?1から?
-
コマンドライン引数の例外処理...
-
Java配列の問題を教えてくださ...
-
SwingでJtableのヘッダ行が表示...
-
Eclipseのコンソールを常に表示...
-
cloneメソッドについて (java)
-
ループ処理の際、最後だけ","を...
-
[JAVA]try 内の変数を外で!?
-
変数を動的に作るには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
ArrayListの要素数の上限
-
BCD形式で時刻を!
-
DateTimePickerに値を入れたい...
-
excel vba 時間計算と条件分岐...
-
日付や時刻の"01"を" 1"に変換...
-
Stringクラスの変数の格納アド...
-
C言語の変数(LSB)の合わせ込...
-
Evaluate()に文字列の形式の数...
-
char型での演算子
-
実行シェルからCOBOLへパラメー...
-
DOSバッチで変数の値を変数名に...
-
レジストリの値の取得のデータ...
-
hiddenの値を消したくない!
-
結合した文字列をファイル名に...
-
ResultSetの内部構造(Java)
-
String型の値が大文字か小文字...
-
javaの演算子の部分ですが 4行...
おすすめ情報