
こんにちは。タイトルの通りのことをしたく色々悩んでおります。
下に張ったコードを見ていただけますか。
やりたい流れはわかっていただけると思います。
ところどころ、VBAの決まりに従っていない箇所があると思いますがそれを指摘し、
正しい記述を教えていただけませんか。
それを自分の中で理解したいと思っています。
宜しくお願い致します。
Sub Macro2()
'
' Macro2 Macro
'
'変数宣言
Dim OpenFileName As String
Dim value As Integer
'ファイルオープン&ファイル名格納
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm")
'ファイルが無かった時
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
End If
'セルD3のデータを取得
value = OpenFileName.Worksheets("Sheet1").Range("D3").value
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは。
気になった点
value というプロパティ名を変数には使わないこと。
OpenFileName については、Variant を使う方法もあります。
そうすると、VarType で、Booelan 値が返りますので、それで、終了させます。
ブックを開いたら、その受ける側の左辺は、Workbook オブジェクトになっていますので、それを利用します。
なお、私自身は、変数はなるべく短い名前を使っています。
myVal という書き方をキャメル型といい、OpenFileNameのような書き方をパスカル型と言います。大文字・小文字を組み合わせて使うようにします。
my と付けたり、m を先頭に付けるのは、プレフィックス文字といい、ローカル変数の意味を表しています。
また、慣例的に小文字を使ってもよいのが、sh =Worksheet, wb =Workbook
i,j ,k のなどのカウンター変数があります。また、ここには出てきませんでしたが、Integer というデータ型は特別な意味をもたせることが多いのです。
特に、Excelは、32bit が標準ですから、Long型の方が、Integer型よりも速い処理ができると言われています。
なお、これが決定的だということではありませんが、VBAは、後々みると、読めなくなることが多いので、コメントは目印になる所とかに入れますが、全部は書き入れません。
もし、もうご存知のことがありましたから、その点は、どうぞ大目にみてください。
'//
Sub Macro2R()
'
' Macro2 Macro
'
'変数宣言
Dim OpenFileName As Variant
Dim myVal As Long
Dim Wb As Workbook
'ファイルオープン&ファイル名格納
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm")
'ファイルが無かった時
If VarType(OpenFileName) = vbBoolean Then Exit Sub
Set Wb = Workbooks.Open(OpenFileName)
'セルD3のデータを取得
myVal = Wb.Worksheets("Sheet1").Range("D3").Value
End Sub
早速のご回答ありがとうございます。
紹介していただいたコードを参考に作り、おかげさまで問題なく動きました。
これから作っていきたい業務用マクロの基礎となる部分でしたので大変助かりました。
ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
Teraマクロで日付ディレクトリ...
-
CSVで文字化けしてしまうのを直...
-
エクセルのファイル間のリンク...
-
ファイルを並び替えるときの「...
-
複数のExcelブックから一覧表を...
-
EXCELのVBAで画像を選んだ順に...
-
ハイパーリンクで前回値をひき...
-
エクセルVBA+ADOで特定のCSVフ...
-
EXCEL VBA ー 同一フォルダ内の...
-
ローマ字→カタカナへ変換(エク...
-
コマンドボタンを押すたびに大...
-
Excel:コマンドボタンの移動
-
スクロールしてもボタンを常に...
-
マクロ 実行ボタンを押さずに...
-
Accessのコマンドボタンの立体...
-
VBAでEXCELに埋め込んだPDFを開...
-
エクセル グラフの軸の最小値最...
-
コマンドボタンがあるかどうか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでセルに入力したパ...
-
excelに貼り付けた数値が勝手に...
-
EXCELのVBAで画像を選んだ順に...
-
Teraマクロで日付ディレクトリ...
-
ファイルを並び替えるときの「...
-
PDF ファイルが開けません。
-
VLOOKUP関数とネットワークに置...
-
エディタで効率的な切り出し方法
-
ハイパーリンクで前回値をひき...
-
=CELL("filename")で取得したフ...
-
エクセルのファイル間のリンク...
-
エクセル マクロの式を教えてく...
-
Excel VBAで自動的にハイパーリ...
-
VBAでFileDialogを利用してファ...
-
CSVで文字化けしてしまうのを直...
-
エクセルからスキャナVBAで連動...
-
「やよいの青色申告」のファイ...
-
Excel2010のVBAで起動時に連続...
-
Notes 開発で、 excelファイル...
-
ファイルを開かず任意ファイル...
おすすめ情報