マクロのことはほとんど全くわからない者です。
どなたか、お力をお貸しください。
先日、画像貼り付けのコードについて質問させて頂き
Sub 画像()
Dim fName, pict As Shape
Dim i As Integer
fName = Application.GetOpenFilename("JPG,*jpg", MultiSelect:=True)
If IsArray(fName) Then
For i = 1 To UBound(fName)
Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持
pict.Height = 180 'resize
ActiveCell.Offset(1, 1).Activate
Next i
End If
End Sub
との回答を頂きました。
このコードをコピーして貼り付けたところ、当然ですが何ら問題なく、マクロが実行できました。
ところが一から自分でコードを入力したところ、
Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持
の部分でエラーがでます。
自分なりに検証したところ
Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _
をコピー貼り付けすれば、当初はエラー(文字が赤くなり、修正候補 式 と表示)がでますが
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持
を自分で入力すれば、エラーが解消しました。
(msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持 もエラーになりません)
ところが、
Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _
を自分で入力し、続けて
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持
を入力すれば、
-1) '- 1 = sizeの )(括弧)が青で色塗りされた白文字
となって
コンパイルエラー 修正候補 ステートメントの最後
と表示されます。
何度も確かめ、見本とおりに入力していることは間違いないのですが、なぜコピー貼り付けしたものはエラーがでないのに、同じように入力したものはエラーになってしまうのでしょうか?
ややこしい説明で申し訳ありませんが、ご教示ください。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんばんは、
横から失礼させていただいたのは、問題の部分のソース内改行がないものを提示する為です。
For i = 1 To UBound(fName)
Set pict = ActiveSheet.Shapes.AddPicture(fName(i), msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1)
pict.Height = 180
ActiveCell.Offset(1, 1).Activate
Next i
また、改行を入れたのは、通常わかり易くする為ですが、この場合は、本来パラメータを示す部分を省略したので、配列に入っているファイル情報と
画像を操作する部分をあまり考えず分けて示しました。
わかり易いコードでは無かったと思っています。
示すためのコードの場合、改行を入れるのであれば、Shapes.AddPictureメソッドのパラメータを明示して下記の様にするべきと思います。
同じコード(該当部分)は
Set pict = ActiveSheet.Shapes.AddPicture( _
fileName:=fName(i), _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=Selection.Left, _
Top:=Selection.Top, _
Width:=-1, _
Height:=-1)
となります。本来の?コード内で 半角スペース_ を使う意味が伝わりますでしょうか。
あとコメントに残した '- 1 = size維持 や 'resize は該当部分の説明(目印)みたいなもので実行コードには影響しません。
修正回答の経緯で付けたコメントです。 ' は半角です。通常自動変換されると思いますが、、
ご質問に関係ないコメント、申し訳ありません参考になればと思っています。
ご質問については、
>コンパイルエラー 修正候補 ステートメントの最後
全角を打ち込む場面が無いと思うので、多分なっていると思いますが、コード内はすべて半角になっていますか? スペース () , ' "
あとスペルチェック 、不要箇所への半角スペース混入、などと思います。
'- 1 = size維持は不要なので消してみてください。 ’ が変換されていないかも?
VBEの使用フォントなどで見にくくなっている可能性を考えてコピーした(動く)ものと
書き直したものを交互にメモ帳などにコピペして比較して見るとかどうでしょう。
また、検証の為、一行で書いてみてはいかがでしょう。
Qchan1962様
連日に渡り、また深夜にもかかわらずご回答ありがとうございました。
ご回答頂いたソース内改行がないコードを入力したところ、うまくいきました!
これで作業効率がグッとアップできます。
感謝致します。
No.3
- 回答日時:
う~ん、良くわかりませんね。
コンパイルエラーが出ている状態で、手動でコンパイルを実行([デバッグ] > [VBA Projectのコンパイル])することで解決したりしませんか?
nekoronda様
深夜にもかかわらず何度も検討して頂き、感謝致します。
Qchan1962様のご回答にありました、改行しないコードを入力したところ、うまくいきました。
この度は、ありがとうございました。
No.2
- 回答日時:
あっ!もしかして
『Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _
を自分で入力し、続けて
msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持
を入力すれば、
-1) '- 1 = sizeの )(括弧)が青で色塗りされた白文字
となって
コンパイルエラー 修正候補 ステートメントの最後
と表示されます。』
って言ってますけど、
『Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), _ msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持』
って2行にして書いたということですか?
2行にする場合は、アンダーバーは必要ありません。
『Set pict = ActiveSheet.Shapes.AddPicture( _
fName(i), msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1) '- 1 = size維持』
になります。
"_"は1行で書くのには長すぎる場合に、複数行に分けて書くときに使われる文字です。
続けての回答ありがとうございます。
いえ、三行に渡って入力していますので、"_"のあとは改行しています。
あり得ない話だと思うのですが、コピー貼りつけすれば問題ないのに、全く同じように入力するとエラーになるのです。
諸事情により、一から入力する必要があり、入力することにこだわっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
エクセル2010 マクロで値のみコピー
Excel(エクセル)
-
エクセルでエラーが出て困っています。
Excel(エクセル)
-
-
4
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
5
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
コンパイルエラー 修正候補:ステートメントの最後
Visual Basic(VBA)
-
8
Excel VBAで値コピーが使用できない。
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
11
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
12
Pictures.Insertメソッド⇒Shapes.AddPictureメソッドに変更したいです。
Visual Basic(VBA)
-
13
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
14
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
15
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
18
マクロで印刷→セルの値から部数変更するには
Excel(エクセル)
-
19
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
20
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#のシリアル通信プログラムで...
-
Excel VBA 見本通りに...
-
Eclipseの空白が変な...
-
Pythonの勉強を始めました。バ...
-
ASP.NET TextBox 入力制限
-
Fortranのフォーマット
-
氏名の入力チェックに全角スペ...
-
ASCII文字列以外を検出する正規...
-
ホームページ制作でコピーライ...
-
XMLを作成してもタグしか表示さ...
-
GoogleChromeでレイアウトが左...
-
掲示板からIPアドレスってど...
-
<TD><input type="text"></TD>...
-
隠しリンク、裏ページ、等を見...
-
テキストエリア内の改行禁止
-
DBからPDFを取得して別画面で表...
-
下着などの洗濯タグ、どうやっ...
-
H1タグに改行の<br>を使う
-
ハイパーリンクからメニュー無...
-
指定URLを新しいウィンドウで開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 見本通りに...
-
ASP.NET TextBox 入力制限
-
ASCII文字列以外を検出する正規...
-
Pythonの勉強を始めました。バ...
-
半角スペースを含む文字列を変...
-
php でtabを空白に変換して表示...
-
JavascriptでIMEのON,OFF制御
-
ホームページ制作でコピーライ...
-
stray '\\240' in programのエ...
-
氏名の入力チェックに全角スペ...
-
ソースコードの改行文字は何に...
-
ボタンコントロールのTEXT...
-
入力されたテキストが、全角か...
-
Eclipseの空白が変な...
-
指定した文字を始点にスペース...
-
C#のシリアル通信プログラムで...
-
Firefoxでのテキストエリアに入...
-
JSONパース時に改行があるとエ...
-
JSで全角英数記号を半角英数記...
-
カラムの末尾にスペースが入る
おすすめ情報