
エクセル2010です。
以下のコードを実行すると「マクロ実行時に実行時エラー13型が一致しません。」というエラーが出ます。配列の型はvariantで設定しているので問題ないと思うのですが、
皆様のお知恵を拝借させていただけないでしょうか。
マクロは
Sub ()
Dim book5 As String,book1 As String
Dim NLink, As Variant, OLink AsVariant , OLdLink As Variant
Dim a As Long
Dim Z As Long, K As Long, J As Long
Book5 = Range("A8").Value
Book1 = Range("A2").Value
Windows(booK5).Activate ‘○○ファイルをアクティブにする
Z = Range("A1")
For K = 1 To Z ‘セルA1 に記載されている数字回繰り返す
OLink(K) = Range("A1").Offset((K) - 1, 2) ←ここでエラー
NLink(K) = Range("A1").Offset((K) - 1, 3) ←同じくエラー
‘△△ファイルを開く
buf = Dir(NLink(K))
If buf = "" Then
MsgBox buf & vbCrLf & "は存在しません。 ファイル名を確認してください。", vbExclamation
Exit Sub
End If
For Each wb In Workbooks
If wb.Name = buf Then
MsgBox buf & vbCrLf & "はすでに開いています", vbExclamation
Exit Sub
End If
Next wb
Workbooks.Open Filename:=NLink(K), UpdateLinks:=0
Windows(book1).Activate '××ファイルをアクティブにする
'旧リンクから新リンクに変更
ActiveWorkbook.ChangeLink Name:=OLink(K), _
NewName:=NLink(K), Type:=xlExcelLinks
'△△ファイルを閉じる
Windows(NLink(K)).Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Next K
Windows(book1).Activate '××ファイルをアクティブにする。
ActiveWorkbook.Save '××ファイルを保存。
Windows(booK5).Activate '○○ファイルをアクティブにする。
End Sub
どうにかエラーを出なくする方法はないですか?
宜しくお願いします。
他にも、おかしなところがありましたらご指導いただければと思います。
No.2ベストアンサー
- 回答日時:
変数としては宣言されていますけど、
配列として扱い要素数が変わる場合に既存の要素の値を保持したいときには、
Dim NLink, As Variant, OLink AsVariant , OLdLink As Variant
↓変更
Dim NLink, As Variant, OLink() AsVariant , OLdLink() As Variant
2行追加
For K = 1 To Z
redim preserve OLink(K)
redim preserve OldLink(K)
OLink(K) = Range("A1").Offset((K) - 1, 2)
NLink(K) = Range("A1").Offset((K) - 1, 3)
というか配列にする必要もなさそうですね。
For K = 1 To Z ‘セルA1 に記載されている数字回繰り返す
OLink =""
NLink =""
OLink = Range("A1").Offset((K) - 1, 2)
NLink = Range("A1").Offset((K) - 1, 3)
だけで良いのでは?
良く見ていませんけど
Range(・・・から指定している部分がちょっと気になります。
この場合アクティブなシートのRangeが参照されます。
あなたの考えているシート以外を見にゆくかも?
早速の返信ありがとうございました。
>変数としては宣言されていますけど、
>配列として扱い要素数が変わる場合に既存の要素の値を保持したいときには、
>Dim NLink, As Variant, OLink AsVariant , OLdLink As Variant
>↓変更
>Dim NLink, As Variant, OLink() AsVariant , OLdLink() As Variant
>2行追加
>For K = 1 To Z
>redim preserve OLink(K)
>redim preserve OldLink(K)
>OLink(K) = Range("A1").Offset((K) - 1, 2)
>NLink(K) = Range("A1").Offset((K) - 1, 3)
やってみましたら、素直にファイルを開くことができました。ありがとうございました。しかし、リンクを変更するマクロを実行すると
ActiveWorkbook.ChangeLink Name:=OLink(K), _
NewName:=NLink(K), Type:=xlExcelLinks
『実行時エラー '1004'』『'ChangeLink'メソッドは失敗しました'Wokbook'オブジェクト』とエラーが出て止まってしまいます。
何がおかしいのですか?ご教授願えればありがたいと思いますのでよろしくお願いします。
No.4
- 回答日時:
マルチポストだったんですね
http://www.moug.net/faq/viewtopic.php?t=72029
マルチポストとは
『[Tips]マルチポストが嫌われる理由~なぜマルチポストは問題か?』
http://stakasaki.at.webry.info/200512/article_3. …
私からは以上です。
すみません。気づかずやってしまいました。
解答くださった皆様には大変ご迷惑をおかけしました。
これからは気を付けたいと思います。
No.3
- 回答日時:
恥ずかしながら外部リンクを初めて知りました orz
ActiveWorkbook.ChangeLink Name:=OLink(K), _
NewName:=NLink(K), Type:=xlExcelLinks
でエラーになるのですから
OLink(K) そのものが無い、あるいはKの値に問題とか・・・
リンクのあるBookで
Sub てすと()
Dim V As Variant
Dim i As Integer
V = ActiveWorkbook.LinkSources(xlExcelLinks)
For i = 1 To UBound(V)
Debug.Print i, V(i)
Next i
End Sub
でリンク名はどうなります?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FORTRANの実行エラーについて
-
アクセスのクエリでコンパイル...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
アクセスでイベントのロジック...
-
VBから参照できないCのDLLを使...
-
「複数の選択範囲に対して実行...
-
VISIOは上位互換のはずなのにフ...
-
Access2010 コンパイルエラー...
-
「パス名が無効です」の発生原因
-
Access2013にてドラッグ&ドロ...
-
ADOXでmdbファイルにオートナン...
-
Returnに対するGoSubがありません
-
EXCELVBAでONEDRIVE上への保管...
-
Excel 2003 のエラーメッセージ
-
エクセルで質問です。 ハイパー...
-
VB6.0開発ソフトインストールで...
-
VB6 Dir関数で52エラー発生
-
freadでデータがない場合の読込...
-
gccを行ってもexeファイルが生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで質問です。 ハイパー...
-
Excel 2003 のエラーメッセージ
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
【COBOL】read文でエラー
-
アクセスのクエリでコンパイル...
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
VBから参照できないCのDLLを使...
-
NAS上のファイルの使用中が解除...
-
データベースソフトのアクセス2...
-
VB6 Dir関数で52エラー発生
-
【関数】同じ関数なのに、エラ...
-
gccを行ってもexeファイルが生...
-
FORTRANの実行エラーについて
-
FTPの送信結果を検知したい
-
fgets関数のEOFの扱い方について
-
ASP.NET 2.0にてアプリが動作し...
-
VBでファイルが開かれているか...
おすすめ情報