0
2つのモジュールをExcelシートに組み込み、診断できなかった問題を実行しようとしています。モジュールは独立して動作しますが、どちらもファイルに入っていると、デバッグ時にサブラインが強調表示された状態で、「コンパイルエラー:引数が間違っているか、プロパティが正しくありません」というメッセージが表示されます。私はさらに診断するのに十分ではなく、私はここでいくつかの指針を得ることができると期待していた。追加のVBAモジュールを追加すると、以前に動作していたモジュールを実行するときにコンパイルエラーが発生する
モジュール1 -
Dim fPO As String
Dim fDate As Date
Dim fPath As String
Dim POFile As String
Dim Template As String
Dim yearfolder As String
Dim monthfolder As String
Dim newfolderpath As String
Dim FileName As String
Sub CreatePOFile()
'
' Creates new file for each PO
'
'
fPO = Range("C4").Value
fDate = Date - 3 'adjust to change date used in file name
fPath = "\\Kforce.com\Group\TAMPA\CORP\Strategic Accounts\Strategic Accounts Operations\CLIENT REPORTS\HP\HP Weekly PO Reporting" 'adjust where file is saved
Template = ActiveWorkbook.Name
monthfolder = Format(fDate, "mm. mmmm YYYY")
yearfolder = Format(fDate, "YYYY")
newfolderpath = fPath & "\" & yearfolder & "\" & monthfolder
FileName = fPO & " Weekly Report as of " & Format(fDate, "yyyymmdd")
'
'
'
'Format pivot table header
Rows("7:7").Select
With Selection
.HorizontalAlignment = xlCenter
End With
'Create new workbook and save individual PO file. Creates new folders if nonexistant
Workbooks.Add
If Len(Dir(fPath & "\" & yearfolder, vbDirectory)) = 0 Then
MkDir fPath & "\" & yearfolder
End If
If Len(Dir(fPath & "\" & yearfolder & "\" & monthfolder, vbDirectory)) = 0 Then
MkDir fPath & "\" & yearfolder & "\" & monthfolder
End If
ActiveWorkbook.SaveAs FileName:=newfolderpath & "\" & FileName, FileFormat:=51
Application.DisplayAlerts = True
POFile = ActiveWorkbook.Name
'Copy Pivot information to new file
Windows(Template).Activate
Range("B7").Select
ActiveCell.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Range("A1").Select
Windows(POFile).Activate
Range("B7").Select
ActiveSheet.Paste
ActiveSheet.Name = fPO
'Formatting PO File and adding information fields
Range("B2").Select
ActiveCell.FormulaR1C1 = "Weekly PO Report"
With Selection.Font
.Name = "Calibri Light"
.Size = 18
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0
.ThemeFont = xlThemeFontMajor
End With
Range("B4").Value = "PO Number:"
Range("B5").Value = "Date Range:"
Range("B4:B5").Select
With Selection
.Interior.Pattern = xlSolid
.Interior.PatternColorIndex = xlAutomatic
.Interior.ThemeColor = xlThemeColorAccent2
.Interior.TintAndShade = 0
.Interior.PatternTintAndShade = 0
.Font.ThemeColor = xlThemeColorDark1
.Font.TintAndShade = 0
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("C4").Value = fPO
Range("C5").FormulaR1C1 = "=TEXT(MIN(C[-1]),""m/d/yyyy"")&"" - ""&TEXT(MAX(C[-1]),""m/d/yyyy"")"
Range("C4:C5").Select
With Selection
.Interior.Pattern = xlSolid
.Interior.PatternColorIndex = xlAutomatic
.Interior.ThemeColor = xlThemeColorDark1
.Interior.TintAndShade = -0.149998474074526
.Interior.PatternTintAndShade = 0
.HorizontalAlignment = xlCenter
End With
Cells.Select
Cells.EntireColumn.AutoFit
Columns("B:B").Select
Selection.ColumnWidth = 15
ActiveWindow.DisplayGridlines = False
Range("A1").Select
'asks if email should be created
Dim answer As Integer
answer = MsgBox("Would you like to create email?", vbYesNo + vbQuestion, "Email Option")
If answer = vbYes Then EmailFile
Else
End If
End Sub
Sub EmailFile()
'Creates email with file attached
Dim OutApp As Object
Dim OutMail As Object
Dim MailBody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
MailBody = "<p style='font-family:calibri;font-size:11pt'>" & "Hello,<br><br>" & _
"Attached you will find the weekly report for " & fPO & "." & "<br><br>" & _
"If you have any questions or discrepancies, please let me know!<br><br>Regards," & "</p>"
On Error Resume Next
With OutMail
.Display
.to = ""
.CC = ""
.BCC = ""
.Subject = FileName
.HTMLbody = MailBody & .HTMLbody
.Attachments.Add ActiveWorkbook.FullName
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
新しいファイルや電子メールを作成し、モジュール2 - 使いやすモジュール2では
Sub Format()
'
' Removes previous raw data and deletes the blank rows so the table doesn't need to be resized upon copy paste of new data
'
On Error Resume Next
Rows("4:" & Rows.Count).ClearContents
Range("raw[Last Name]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("A3:Z3").ClearContents
Range("A3").Activate
End Sub
Sub Refresh()
If Range("A3") = "" Then
MsgBox ("Please paste new data before clicking Refresh.")
Else
ActiveWorkbook.RefreshAll
End If
End Sub
モジュール2では「キーワードが見つかりません」と戻ってくる必要があります、 'Sub Format()'はモジュール1で使われている組み込み関数を上書きします( 'monthfolder = Format(fDate、" mm)。 "Sub Format1()"に名前を変更し、必要に応じてコードを更新してください。 –
すごくうれしいことを研究しようと4時間かけて過ごしました。ここでの教訓は、関数名をsubの名前にしないことです。 – dougiek