最近VBAを勉強し始めたばかりです。 面白いですね…。
さて、恐らく基礎なんでしょうけれど、行き詰まっているので是非アドバイスをお願いします。
とりあえず、テキスト見ながら作ったマクロですがダメでした。
目的は対話型?で入力した名前のワークブックの名前を開かせるというものです。
Sub Macro1()
Dim mywbname As String
Dim mymsg As String, mytitle As String
myMgs = "開いて欲しいファイル名を入力してください"
mytitle = "ファイルを選択"
mywbname = Application.InputBox(Prompt:=myMgs, Title:=mytitle)
If mywbname <> "False" Then
Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\mywbname.xls"
End If
End Sub
なんてなものを作ったのですが、mywbnameを変数として受け取ってくれません。なのでそんなファイルはない…なんてことになっています。
構文自体の見直しも含めてアドバイスお願いします。
蛇足かもしれませんが、○○○のところは個人名が入ります。
C:\Documents and Settings\○○○\デスクトップ\mywbname.xls"
の箇所のmywbnameを既存のファイル名にしてみるとMgsBoXに適当な文字さえ入れれば、そのファイルは開いたので問題なのはmywbnameを入力した名前に置き換えてくれない部分だと思うのですが、よろしくおねがいします。
No.2ベストアンサー
- 回答日時:
>問題なのはmywbnameを入力した名前に置き換えてくれない部分だと思うのですが
その通りです、変数と文字列の連結方法が間違っています
>Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\mywbname.xls"
Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\" & mywbname & ".xls"
とします
したのマクロを実行してみてください
Sub test()
Dim 変数 As String
変数 = "変数を""""でくくっていない"
MsgBox "こちらは変数を""""でくくった例です"
MsgBox "こちらは" & 変数 & "例です"
End Sub
違い分かりますか
修正したものを載せておきます
Sub Macro1()
Dim mywbname As String
Dim mymsg As String, mytitle As String
mymgs = "開いて欲しいファイル名を入力してください"
mytitle = "ファイルを選択"
mywbname = Application.InputBox(Prompt:=mymgs, Title:=mytitle)
If mywbname <> "" Then
Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\" & mywbname & ".xls"
End If
あと、InputBoxの未入力の戻り値は "False" では無く "" です
>If mywbname <> "False" Then
If mywbname <> "" Then
こんな所でしょうか
なるほど! 解説の意味もゆっくりとですが理解できます。
無事にマクロがうごきました。またこれからたびたび質問に登場すると思います、よろしくお願いします。
No.1
- 回答日時:
mywbnameには拡張子は入れないとすると、
Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\mywbname.xls"
↓
Workbooks.Open Filename:="C:\Documents and Settings\○○○\デスクトップ\" & mywbname & ".xls"
ですね。ただ、目的からすると
Sub Macro1()
Dim vFileName As Variant
vFileName = Application.GetOpenFilename()
If vFileName <> False Then
Workbooks.Open Filename:=vFileName
End If
End Sub
のほうがよいかと。GetOpenFilenameのパラメータを指定すれば、いろいろともう少し細かい制御もできますし。
私はまだこの構文には残念ながら行き着いていないようです。
また勉強していく過程で思い出して使わせていただきます。
こうした構文を見るだけでも非常に勉強になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
VBA:ワークブックを変数でActiveにしたいのですが・・
Excel(エクセル)
-
エクセルVBA Workbook変数に変数を使ったファイル名を格納したい
Visual Basic(VBA)
-
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
-
4
vbaでファイルを開くパス名に変数を使いたい
Visual Basic(VBA)
-
5
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
9
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
10
エクセルでエラーが出て困っています。
Excel(エクセル)
-
11
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
12
EXCELのブック名を引数(変数)として設定するには
Visual Basic(VBA)
-
13
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
14
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
15
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
16
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
17
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
18
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
19
EXCELのVBAでRange(A1:C4")を変数にする方法を教え"
Visual Basic(VBA)
-
20
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロでのファイル間のシート...
-
VLookupで参照する範囲を変数で...
-
EXCEL VBA 指定したファイルが...
-
フォルダ内のexcelファイルを順...
-
エクセルデータが突然破損します。
-
LTSpiceにLMV358-Nのモデルを入...
-
VBA ワイルドカードで順番にフ...
-
Excelファイルに書かれた文書の...
-
オートフィルタをし選択・貼付...
-
Excel VBA でファイルが開かれ...
-
秀丸:あらかじめ設定した複数...
-
エクセルマクロで不特定なファ...
-
ISOファイルとMDSファイル
-
イーファンビューでwebpファイ...
-
excel2003でxlsxファイルを更新...
-
batファイルでレジストリキーの...
-
イラレでjpeg出力すると、白ぬ...
-
テキストデータでNULL?
-
csvファイル中の「e」が変換さ...
-
ccdファイルはどのようにして使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
フォルダ内のexcelファイルを順...
-
VBAでワークブックの名前を変数...
-
エクセル(マクロ)のファイル...
-
エクセルのxls形式からxlsx形式...
-
エクセル 複数ファイルの一括...
-
エクセルのシートの数を数えた...
-
【Excel VBA】ファイル名が一...
-
【マクロ】名前を保存する際に...
-
ファイルを開かずにマクロを実行
-
accessフォルダを移動したらフ...
-
フォルダ内のブック全部にパス...
-
vlookup関数の引数を変数で指定...
-
Excel VBA でファイルが開かれ...
-
ファイルの保存場所を変えたら...
-
Accessのaccdbファイルを起動で...
-
リンク切れチェックを行うマクロ
-
エクセルマクロ 異なるファイ...
-
データ参照先が別ファイルの場...
おすすめ情報