excel 2010のExcelドキュメントでExcel 2016のドキュメントを実行するのに問題があります。 背景: これは複雑なワークシートで、個々の化学物質に関連する危険性。著者には時代がかかっていましたが、2010年にはうまくいきますが、最初のスクリプトは2016年に幕を閉じました。私の推測では、それは単なる問題ではないということです。excel 2016でExcel 2010 VBAスクリプトを実行するとエラーが発生する
Private Sub CommandButton1_Click()
Dim chemical As String, illegal As String, fname As String
Dim X as Integer
On Error Resume Next
chemical = Range("Q13") 'this will be used as part of the filename
If chemical <> "" Then
Application.ScreenUpdating = False
illegal = Array("<", ">", "|", "/", "*", "\", "?", "[", "]", ":")
For X = LBound(illegal) To UBound(illegal)
chemical = Replace(chemical, illegal(X), "-", 1) 'replaces illegal characters for file name
Next X
fname = Application.GetSaveAsFilename(InitialFileName:="Draft PAC " & chemical & ".xlsm")
Do
Loop Until fname <> False
ActiveWorkbook.SaveAs Filename:=fname
Application.ScreenUpdating = True
Else: MsgBox "Please enter the name of the chemical into the orange shaded cell"
End If
End Sub
問題で始まる「コンパイルエラー:予想配列」とLBOUNDが強調表示
スクリプトが行う最初のことは、ファイル名に化学物質の名称を含む文書を保存しています。 ここで、いくつかのgoogelingで、新しいバージョンのexcel(またはVBA?)にOption Explicitを設定する必要があることがわかりましたので、これを行い、変数を宣言しました(または私は思った)。実際の問題ではありませんか?そしてもう一度、ここではおそらく単なる1つの問題以上のものです。
私は迷っています。
私はExcel 2010を使用していますが、そのバージョンにも問題が存在することをお伝えします。 'illegal'を配列にしないと宣言しているので、' LBound(違法) 'を行うことはできません。新しいバージョンのExcelでは、** Option Explicitが必要ではありませんが、以前のバージョンで使用するのと同じように、使用することをお勧めします。おそらく、(間違った)宣言を追加してから、**あなたの問題を解決し始めましたか? 'Do'' Loop Until fname <> False'のようなものは、新しいバージョンと同様、2010年に無限ループを引き起こす可能性があります。 – YowE3K
*新しいバージョンのExcel(またはVBA?)では、Option Explicitを設定する必要があります* - ああ、どうしたらいいのですか! –
@ Mat'sMug SOのexcel-vbaタグは、 'Option Explicit'が必須であればほぼ冗長になります! – YowE3K